挿入されたフィールド、より正確にはDateTimeフィールド内でのみ単一の値を適用する方法が必要です。これは、挿入時に常に現在の日付/時刻に設定する必要があります。私は大学の演習に取り組んでおり、すべての制約をDB内で実行することを望んでいます。通常、私はDEFAULT GetDate()を設定し、挿入には常にDEFAULTを使用しますが、演習の要件によりこれが妨げられます。これで整数の場合、これを行うことができます(他のフィールドは目前の問題とは無関係であるため、省略しました):
CREATE TABLE tester(
d INTEGER not null DEFAULT 3,
CONSTRAINT chkd CHECK(d = 3)
);
しかし、私が欲しいのは次のとおりです。
CREATE TABLE tester(
d DATETIME not null DEFAULT GETDATE(),
CONSTRAINT chkd CHECK(d = ????????)
);
check()でGetDate()を繰り返すと、マイクロ秒によって不一致が発生するため、挿入時にエラーがトリガーされます。だから私は最初の質問は、これは可能ですか?もしそうなら(私はそう願っています)どうやって?
ライアンのコメントに基づいて、機能しているこの答えに到達しました
CREATE TRIGGER trigger_date ON [dbo].[tester]
FOR INSERT
AS
BEGIN
UPDATE tester SET d = GETDATE() WHERE id IN (SELECT id FROM INSERTED);
END
GO
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加