の列Created
とUpdated
の2つのテーブルがあります。ヌルの列に挿入した後のトリガー
私が作成した「私はエラー
を取得し、トリガー
ALTER TRIGGER [dbo].[tr_category_inserted] ON [dbo].[Category] AFTER INSERT AS BEGIN UPDATE Category SET Created = GETDATE(), Updated = GETDATE() FROM inserted WHERE Category.ID = inserted.ID; END
と
ALTER TRIGGER [dbo].[tr_category_updated] ON [dbo].[Category] AFTER UPDATE AS BEGIN UPDATE Category SET Updated = GETDATE() FROM inserted inner join [dbo].[Category] c on c.ID = inserted.ID END
に対応するが、私は新しい行を挿入していた場合は、列にNULL値を挿入することはできません書きました'、テーブル 'カテゴリ ';列はNULLを許可しません。 INSERTは失敗します。
Insertコマンド:私はnullを許可するように、これらの列に設定することなく、このようなトリガを書くことができますどのように
INSERT INTO [Category]([Name], [ShowInMenu], [Deleted])
VALUES ('category1', 0, 0)
?
'insert'で' date'を自動的に更新したい場合は、 'triggers'の代わりに' default' constraintを使うことをお勧めします。 – DON
トリガーは挿入後にしか動作しないので、挿入時に「作成」および「更新」されます。 – TechDo
トリガーの名前が既に述べているので、トリガは起動します**挿入後に**が発生しますが、 'NOT NULL'カラムに対してINSERTに**値**を与える必要があります。したがって、これらの列の初期値を設定するために 'INSTEAD OF INSERT'トリガを書く必要があります。あるいは、その列に' DEFAULT(GETDATE()) '制約を定義するだけで自動的に' INSERT '.... –