|
|
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, помогите, пожалуйста, с триггерами. Я знаю,что это азы и каждый кто начинает программирование уже априори должен был бы их знать... но я как раз только начал изучать азы. :) Хочу создать триггер на запрет удаления. Это база рецептов в ресторане. Создал следующие таблицы "Рецепт", "Меню" и вспомогательную таблицу "Цена". Триггер должен запретить удаление рецепта из таблицы "Рецепт" если этот рецепт в "Меню". DROP TABLE Menu CASCADE CONSTRAINTS; DROP TABLE Preis CASCADE CONSTRAINTS; DROP TABLE Rezept CASCADE CONSTRAINTS; CREATE TABLE Menu( Menu_ID NUMBER(20) NOT NULL PRIMARY KEY, Description VARCHAR2(50) ); CREATE TABLE PriseS ( Menu_ID NUMBER(20) NOT NULL, Rezept_ID NUMBER(20) NOT NULL, Prise NUMBER CONSTRAINT cc_preis CHECK (Preis > 0), PRIMARY KEY (Menu_ID, Rezept_ID) ); CREATE TABLE Rezept( Rezept_ID NUMBER(20) NOT NULL PRIMARY KEY, Employee_ID NUMBER(20), Description VARCHAR2(50), ); CREATE TRIGGER Rezept_in_Menu BEFORE DELETE ON Rezept; BEGIN SELECT Prise FROM PriseS IF Prise › 0 THEN raise_application_error (-20000, 'Cannot delete Rezept. It is in the Menu'); END; Пишет, что неправильный синтаксис. Я похоже без помощи азы не выучу :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 17:51 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
МаксиМилТриггер должен запретить удаление рецепта из таблицы "Рецепт" если этот рецепт в "Меню". Триггер не может делать работу foreign key. Найди другую задачу. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 18:52 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
МаксиМилЗдравствуйте, помогите, пожалуйста, с триггерами. CREATE TRIGGER Rezept_in_Menu BEFORE DELETE ON Rezept; BEGIN SELECT Prise FROM PriseS IF Prise › 0 THEN raise_application_error (-20000, 'Cannot delete Rezept. It is in the Menu'); END; Пишет, что неправильный синтаксис. Я похоже без помощи азы не выучу :( Попробуй так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 20:46 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
триггер не нужен. нужно: alter table PriseS add foreign key (Rezept_ID) references Rezept; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 21:16 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, спасибо большое за ответ! А что же тогда делает триггер BEFORE DELETE? Как я понял читая в интернете, для автоматических уведомлений "ошибка" как раз и используют триггеры. Очевидно я неправ. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 22:04 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
efendi, спасибо за ответ! Что делает строка DECLARE vPrice? NUMBER - я понимаю что это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 22:14 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
МаксиМил, мне в свое время разбираться в азах помогал неплохой курс от Специалиста Oracle SQL для начинающих и PL/SQL для начинающих. Советую поискать на просторах интернета и посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 23:04 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
МаксиМилDimitry Sibiryakov, спасибо большое за ответ! А что же тогда делает триггер BEFORE DELETE? Как я понял читая в интернете, для автоматических уведомлений "ошибка" как раз и используют триггеры. Очевидно я неправ. :( Триггеры для более сложных кейсов, а ваш кейс - это как раз то, для чего придумали foreign key. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 01:45 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
efendiПопробуй такодним триггером FK не реализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 09:21 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
Пробовалка сломаетсяefendiПопробуй такодним триггером FK не реализовать. Не ставил такой цели. У человека не компилился триггер, я предложил вариант и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 11:24 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
МаксиМилefendi, спасибо за ответ! Что делает строка DECLARE vPrice? NUMBER - я понимаю что это. Объявляет числовую переменную для сохранения результата запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 11:28 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
efendiНе ставил такой цели.если у кого-то болит голова, это не повод предлагать недорешение, не ставя диагноз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 12:40 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
efendiНе ставил такой цели. У человека не компилился триггер, я предложил вариант и все.Это показывает, что ты всего лишь тоже ламер, хоть и владеющий синтаксисом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 12:57 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
efendiМаксиМилЗдравствуйте, помогите, пожалуйста, с триггерами. CREATE TRIGGER Rezept_in_Menu BEFORE DELETE ON Rezept; BEGIN SELECT Prise FROM PriseS IF Prise › 0 THEN raise_application_error (-20000, 'Cannot delete Rezept. It is in the Menu'); END; Пишет, что неправильный синтаксис. Я похоже без помощи азы не выучу :( Попробуй так: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 14:42 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
ламер(ы)efendiпропущено... Попробуй так: Код: 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. но не решит вопроса с инсертом в менюху незакоммиченным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 14:43 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
ламер(ы)но не решит вопроса с инсертом в менюху незакоммиченным И что будет с твоим триггером когда рецепта в меню таки нет? SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 15:01 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
SYламер(ы)но не решит вопроса с инсертом в менюху незакоммиченным И что будет с твоим триггером когда рецепта в меню таки нет? SY.думаю, таки удалит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 18:09 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
ElicefendiНе ставил такой цели. У человека не компилился триггер, я предложил вариант и все.Это показывает, что ты всего лишь тоже ламер, хоть и владеющий синтаксисом. О, великий гуру Elic снизошел до нас простых ламеров, как всегда оскорбляя всех налево и направо и как обычно ничего конкретного божественного не предлагает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 19:41 |
|
||
|
Триггер запрет на удаление записи
|
|||
|---|---|---|---|
|
#18+
МаксиМилЯ похоже без помощи азы не выучу :( Обычно для этого достаточно хорошей книги. А главный аз здесь заключается в том, что реализация ссылочной целостности на триггерах практически всегда ошибочна, а в оставшихся случаях неэффективна. Типичные примеры "ссылочной целостности на триггерах" рушат эту самую целостность, как только с базой начинают работать несколько пользователей одновременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 01:34 |
|
||
|
|

start [/forum/topic.php?fid=52&gotonew=1&tid=1885771]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
183ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 493ms |

| 0 / 0 |
