Ваш синтаксис просто поодаль:
CREATE TRIGGER dbo.trUpdate
ON dbo.Tablename
FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE Tablename
SET Datecolumn = GETDATE()
WHERE ID IN (SELECT id FROM inserted);
END
GO
Теперь то, что вы должны сделать, это изменить столбец NOT NULL
и по умолчанию от GETDATE()
. Тогда вам нужно только запустить этот триггер при обновлении.
-- first clean up any remaining NULL values:
UPDATE dbo.Tablename
SET DateColumn = '19000101'
WHERE DateColumn IS NULL;
-- now add the default constraint:
ALTER TABLE dbo.Tablename ADD CONSTRAINT
DF_Tablename_DateColumn DEFAULT(GETDATE()) FOR DateColumn;
-- now add the NOT NULL constraint:
ALTER TABLE dbo.Tablename ALTER COLUMN DateColumn
DATETIME NOT NULL;
-- now you can update the trigger so that it only fires on update:
ALTER TRIGGER dbo.trUpdate
ON dbo.Tablename
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE Tablename
SET Datecolumn = GETDATE()
WHERE ID IN (SELECT id FROM inserted);
END
GO
Извините, больше опечатки, Спасибо миллион, работал как абракадабра!, Ур хорошо! – user851971
Первый триггер сработал для меня, он зарегистрировал метку даты/времени для любой вставки или обновления, сделанной мной, когда я изменил таблицу Xture (dateColumn NOT NULL DEFAULT GETDATE()) до реализации решений ур. – user851971