0 / 0 / 1
Регистрация: 10.11.2011
Сообщений: 85
|
||||||
1 | ||||||
Тригер27.05.2013, 15:21. Показов 2474. Ответов 14
Метки нет (Все метки)
БД «Мировые рыбные ресурсы»
Тригер: розробити тригер на додання/зміну записів у таблиці «Рыбы», такий, щоб забороняти додавання запису, значення усіх полів якого співпадають зі значеннями вже існуючого запису в цій таблиці (окрім коду риби). Збережена процедура: за даним типом середи життя показати кількості сімейств риб, пристосованих до такого типу середи. Как написать так, что бы строка "'Данные об этой рыбе уже есть в таблице!!!'", выводилась при добавлени записи, которая уже существует???
0
|
27.05.2013, 15:21 | |
Ответы с готовыми решениями:
14
Тригер на изменение таблицы Тригер на изменение таблицы Тригер для каждой записи Подскажите как реализовать тригер |
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
|
|
27.05.2013, 15:34 | 2 |
А две одинаковых рыбы добавить-таки можно, да?
Добавлено через 1 минуту @@ROWCOUNT в триггерах я в последнее время не использую. Вдруг захочется выполнить MERGE для этой таблицы?
0
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
||||||
27.05.2013, 16:05 | 3 | |||||
хм... заинтересовался)
AFTER INSERT отрабатывает уже после добавления в таблицу, поэтому просто проверки совпадения INSERTED и [Таблица] недостаточно - данные уже добавлены Вариант для критики: ))
0
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
|
|
27.05.2013, 16:23 | 4 |
Возможно, ROLLBACK в триггере не очень хорошо.
Вместо ROLLBACK и PRINT лучше, наверно, RAISERROR().
1
|
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
|
|
27.05.2013, 16:39 | 5 |
0
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
|
|
27.05.2013, 16:47 | 6 |
0
|
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
|
|
27.05.2013, 16:57 | 7 |
вот тут http://msdn.microsoft.com/ru-r... 05%29.aspx
как-то ни слова про ROLLBACK Или читал не до полного просветления? AFAIR триггер всегда в транзакции исполняется. Или опять нет полного просветления?
0
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
|
|
27.05.2013, 17:01 | 8 |
Я вроде нигде и не говорил, что нельзя.
RAISERROR() лучше, это моё мнение. Не больше.
0
|
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
|
|
27.05.2013, 17:06 | 9 |
я правильно понял - RAISERROR в триггере откатит транзакцию?
0
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|
27.05.2013, 17:14 | 10 |
меня в общем-то не столько ROLLBACK интересовал, сколько группировка... как-то тяжеловесно получается, вроде...
Хотя с другой стороны, как иначе - пока не вижу) Добавлено через 4 минуты RAISERROR сгенерирует собственную ошибку вместо стандартной, которую можно будет перехватить в приложении (PRINT из приложения не виден), ошибка в свою очередь приведет к откату транзакции
1
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
|
|
27.05.2013, 17:14 | 11 |
1
|
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
|
|
27.05.2013, 17:18 | 12 |
доставляет вот что.
Если у некой рыбы 100500 признаков, и каждое - поле в таблице - чего делать-то?
0
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|
27.05.2013, 17:27 | 13 |
Более четко сформулировать постановку задачи)) А из четкой постановки сразу будет видно и правильное решение)
0
|
pincet
|
27.05.2013, 17:30
#14
|
Не по теме:
0
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|
27.05.2013, 17:40 | 15 |
0
|
27.05.2013, 17:40 | |
27.05.2013, 17:40 | |
Помогаю со студенческими работами здесь
15
Отменить добавление записи через тригер Тригер записи или обновления таблицы Тригер на Update всей таблицы и запись стараых данных в таблицу History Тригер для удаления в варианте FOR EACH ROW для SQL 2000 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |