Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не могу правильно создать триггер ٍв SQL SERVER 2000 [D6, MSSQL]


jazz ©   (2003-10-30 17:23:00) 

Создаю триггер для таблицы Табл1 и лог этой таблицы ЛТалб1
тригере обрабатываю событие IF UPDATE(DELIVERED) "DELIVERED поле с типом BIT", при изменени поля DELIVERED с False на True добавлюя в таблицу ЛТабл1 CURRENT_USER и Дату.. все работает при событие Update он заносит юзера и дату в таблицу ЛТабл1 но после этого когда открываю тадблицу Табл1 и хочу в ручную или же запросом поменять свойста DELIVERED любой записи на противоположный (True > False или False > True) Sql Server выдает ошибку (string or binary type truncated) если убираю INSERT из тригера и делаю его DISABLE все меняеться в чем дело?


Fay   (2003-10-30 19:10:00) [1]

SELECT @ID = ID FROM INSERTED - это не опасная, а очень глупая операция


Delirium   (2003-10-30 18:00:00) [2]

Я бы написал так

CREATE TRIGGER [TRIGGER1] ON dbo.tbl_lease
FOR INSERT, UPDATE, DELETE
AS
IF UPDATE(DELIVERED)
INSERT LTBL_LEASE (USERNAME,DATE,ID,WORK)
SELECT CURRENT_USER, getdate(), ID, "Сдано в прокат" FROM INSERTED


Delirium   (2003-10-30 17:55:00) [3]

SELECT @ID = ID FROM INSERTED - опасная операция, что будет в @ID если в INSERTED нет ни одной записи или на оборот - больше одной ?


Nikolay M.   (2003-10-30 17:39:00) [4]

И все эти манипуляции должны быть одинаковы в INSERT, UPDATE, DELETE?


jazz   (2003-10-30 17:36:00) [5]

точнее в строке SELECT @ID = ID FROM INSERTED
в место INSERTED должно быть DELETED а может я и не прав:)


jazz   (2003-10-30 17:30:00) [6]

CREATE TRIGGER [TRIGGER1] ON dbo.tbl_lease
FOR INSERT, UPDATE, DELETE
AS

DECLARE @ID int, @USER varchar(30), @date varchar(10)

SET @USER = CURRENT_USER
SET @DATE = getdate()
SELECT @ID = ID FROM INSERTED

IF UPDATE(DELIVERED)
BEGIN
INSERT INTO LTBL_LEASE
(USERNAME,DATE,ID,WORK)
VALUES (@USER,@Date,@ID,"Сдано в прокат")
END


Delirium   (2003-10-30 17:25:00) [7]

Сумбур... приведи полный скрипт триггера


Наверх

Титульная страница Поиск, карта сайта Написать письмо