| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > trigger на insert |
| Автор: Satana 15.4.2005, 08:00 | ||
Люди ну помогите кто чем может. У меня есть таблица в которой есть уникальное поле (номер пластины) обычно его генерируют отдельно, но мне нужно если я вставляю в это поле к примеру 666 то вместо этого подставить другое значение. но чото не получается я делаю так:
так не получается при вставке ругается что 666 уже есть в таблице |
| Автор: Akina 15.4.2005, 08:41 | ||
вместо
сделай просто 1) insert into izmerenia (ser_nomer_plast, id_zakaz) values (@snn, @zakaz) 2) откажись от вставки в триггере В результате - вставка не пройдет, но будет выполнен второй запрос на вставку - с теми же данными, но новым серийным номером. А т.к. новый серийный номер не равен 666, то триггер при псевдорекурсивном вызове его пропустит без изменений, и запись ляжет в базу. |
| Автор: Satana 15.4.2005, 08:45 |
| Akina А как отказаться от вставки в самом триггере? можно примерчик пожалста ЗЫ сейчас вот попробовал как Вы посоветовали но чтото все равно та же ошибка, буду копать на отмену вставки |
| Автор: Akina 15.4.2005, 11:10 | ||
м-м-м... что-то около вот так:
|
| Автор: Satana 15.4.2005, 12:03 |
| не получается так, орет на уникальное поле в izmerenia, дело в том что ser_nomer_plast есть уникальное поле и повторений не допускает.. может попробовать after insertom как нить? |
| Автор: Akina 15.4.2005, 13:52 | ||
Тогда используй триггер не FOR INSERT, а INSTEAD OF INSERT. |
| Автор: Satana 15.4.2005, 14:47 | ||
| Akina Я вышел не много по другому, и ошибка была изза невозможности конфертировать дату в формате флоат в стринг. Я просто пишу дату с точностью до миллисекунд в базу и все прекрасно ботает. Но все равно спасибо за примеры. ЗЫ вот что получилось у меня если вдруг кому потребуется:
|