|
|
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
1. Хочу создать БД Library с таблицей Book и с полями id int(10) auto_increment authorId int(10) bookName varchar(100) numberOfBooks int(10) default 1 currentNumberOfBooks int(10) - тут вопрос, как сделать так, чтобы по дефолту значение было равно значению колонки numberOfBooks primary key (id), foreign key (authorId) references Person(id) 2. Хочу создать несколько хранимых процедур. Начал с простого и уже что-то не так. Красным пометил, где MySQL WorkBench видит ошибку use Library; drop procedure if exists newPerson; create procedure newPerson ( firstName varchar(20), lastName varchar(20), isAuthor boolean) begin insert into Person (firstName, lastName, isAuthor) values (firstName, lastName, isAuthor); end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 18:43:26 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
GeronemocurrentNumberOfBooks int(10) - тут вопрос, как сделать так, чтобы по дефолту значение было равно значению колонки numberOfBooks Никак. Либо дублируйте значение в инсерте, либо делайте копирование в триггере before insert. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 19:03:29 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
Geronemo2. Хочу создать несколько хранимых процедур. Начал с простого и уже что-то не так. Красным пометил, где MySQL WorkBench видит ошибку use Library; drop procedure if exists newPerson; create procedure newPerson ( firstName varchar(20), lastName varchar(20), isAuthor boolean) begin insert into Person (firstName, lastName, isAuthor) values (firstName, lastName, isAuthor); endНе стоит одинаково называть разные объекты БД, в частности isAuthor. Даже в тех случаях, когда это синтаксически допустимо, это приведет к ненужным сложностям в сопровождении кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 19:05:05 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
miksoftНе стоит одинаково называть разные объекты БД, в частности isAuthor. Даже в тех случаях, когда это синтаксически допустимо, это приведет к ненужным сложностям в сопровождении кода. ок, я переименовал, теперь вот так. use Library; drop procedure if exists newPerson; create procedure newPerson ( fName varchar(20), lName varchar(20), isAu boolean) begin insert into Person (firstName, lastName, isAuthor) values (fName, lName, isAu); end Но все равно там где закрывающая скобка и знак ';' какая-то ошибка. При этом вот такое работает авторuse Library; insert into Person (firstName, lastName, isAuthor) values ('Ernest', 'Hemingway', true); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 19:22:35 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
про точку с запятой - забыли про DELIMITER ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 19:34:52 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
miksoftпро точку с запятой - забыли про DELIMITER DELIMITER $$ use Library$$ drop procedure if exists newPerson$$ create procedure newPerson ( fName varchar(20), lName varchar(20), isAu boolean) begin insert into Person (firstName, lastName, isAuthor) values (fName, lName, isAu); end Методом тыка вот такое заработало, пытаюсь нагуглить смысл такой конструкции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 19:54:05 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
GeronemoМетодом тыка вот такое заработало, пытаюсь нагуглить смысл такой конструкции.В случае с MySQL не нужен ни метод тыка, ни, обычно, гугл. У MySQL есть весьма приличная официальная документация . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 19:56:25 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
Есть вопрос - как в MySQL можно заниматься отладкой. Я привык, что в java или c прога не компилируется, когда где-то ошибка или можно пройтись дебаггером и найти runtime ошибку. А как быть в MySQL Я вот пишу довольно сложную для меня процедуру и в ней где-то ошибка, если бы была возможность смотреть, что там происходит во время выполнения. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Так выглядит БД. Я сделал 12 записей в Person и 14 в Book Пытаюсь создать процедуру addBooks ( fNameAuthor varchar(20), lNameAuthor varchar(20), bName varchar(100), numOfBooks int(10)) которая бы создавала автора, если его нету, создавала запись в таблице Book если такой нет или увеличивала количество книг в полях numberOfBooks и currentNumberOfBooks, если запись о такой книге уже есть. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Первую часть процедуры я сделал, теперь надо продолжать, но там постоянно вылетают ошибки, вот и возник у меня вопрос, как бы отдебагить процедуру и посмотреть, что там происходит по каждой строчке. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 22:41:13 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
Geronemo, Встроенных средств отладки в MySQL нет. Есть внешние - 14579840 P.S. Не вчитывался внимательно в закомментированные строчки, но похоже, что что они делаются одним INSERT ... ON DUPLICATE KEY UPDATE ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 23:24:03 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
Зацените процедуру добавления книги/книг в библиотеку 2 вспомогательные процедуры Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Собственно сама процедура. Я ее потестил все ветви if работают верно Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 12:01:13 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
еще один вопросик. создал базу посвященную библиотеке Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Напихал туда данных. Специально, чтобы протестировать разные скользкие моменты. Типа несколько авторов у одного произведения (Ильф и Петров, Золотой теленок) или несколько томов у произведения данного автора (Лев Толстой, Война и Мир том 1, том 2, том 3). Написал запрос Код: sql 1. 2. 3. и получил 2 записи о золотом Теленке (т. к. там 2 автора) и 3 записи о Войне и мире (т. к. там 3 тома). если добавить в конце group by Literarywork.literaryWorkName (или id), то Война и мир становится 1 записью, как и хотелось бы, а запись об авторе номер 2 Золотого Теленка (Петрове) не отображается. Мне бы как-то сгруппировать все произведения так, чтобы Война и мир была одной записью, а Золотой Теленок 2-мя, в каждой свой автор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 11:52:53 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
Отмена. Можете не читать и не вникать в большое сообщение выше. Я добавил Writer.id и все стало замечательно group by Literarywork.literaryWorkName, Writer.id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 11:57:02 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
Надо было лишь заглянуть в учебник на несколько минут и узнать, что в group by можно перечислять критерии через запятые, а не только с помощью and (жаль тут нельзя редактировать сообщения, я бы этот текст добавил к предыдущему) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 11:58:48 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
Geronemoв group by можно перечислять критерии через запятые, а не только с помощью andа расскажите, как можно перечислять критерии в group by с помощью and? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 13:18:16 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
tanglirGeronemoв group by можно перечислять критерии через запятые, а не только с помощью andа расскажите, как можно перечислять критерии в group by с помощью and?Синтаксически это не запрещено. Только тогда это будет всего один критерий с всего двумя значениями, т.е. будет максимум две группы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 13:38:07 |
|
||
|
Пара вопросов по синтаксису
|
|||
|---|---|---|---|
|
#18+
tanglirGeronemoв group by можно перечислять критерии через запятые, а не только с помощью andа расскажите, как можно перечислять критерии в group by с помощью and? Спасибо. Своим комментарием вы ответили на мучавший меня вопрос, правильно ли я создал таблицы для данной предметной области )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 14:24:24 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38739891&tid=1834183]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 346ms |

| 0 / 0 |
