タイムスタンプタイプの「作成済み」と「変更済み」の2つの列を持つテーブルを作成したいと思います。私は彼らにデフォルト値を持たせたくありません。しかし、それらを作成すると、少なくとも1つはデフォルトとして、また更新時に自動的にCURRENT_TIMESTAMPが設定されます。
自分の列のデフォルト値または更新値なしでタイプタイムスタンプを設定するにはどうすればよいですか?
編集:MySQLを使用しています
タイムスタンプタイプの「作成済み」と「変更済み」の2つの列を持つテーブルを作成したいと思います。私は彼らにデフォルト値を持たせたくありません。しかし、それらを作成すると、少なくとも1つはデフォルトとして、また更新時に自動的にCURRENT_TIMESTAMPが設定されます。
自分の列のデフォルト値または更新値なしでタイプタイムスタンプを設定するにはどうすればよいですか?
編集:MySQLを使用しています
SQL Serverを使用している場合、timestamp
タイプは実際の日付または時刻の値を格納するためではなく、行のバージョン管理に使用されます。 MSDNを参照してください。
datetime
データ型を使用して列を作成してから、トリガーを使用しcreated
て値を設定できます。modified
CREATE TRIGGER trg_SetDateCreated ON MyTable
FOR INSERT AS
UPDATE MyTable
SET created = CURRENT_TIMESTAMP
WHERE MyTable.id = (SELECT Id FROM Inserted);
GO
CREATE TRIGGER trg_SetDateModified ON MyTable
FOR UPDATE AS
UPDATE MyTable
SET modified = CURRENT_TIMESTAMP
WHERE MyTable.id = (SELECT Id FROM Inserted);
GO