挿入時に現在の日付を入力する「created_date」DATETIMEフィールドがあります。このトリガーに使用する構文は何ですか?これは私がこれまで持っているものですが、間違っています。
CREATE TRIGGER set_created_date
BEFORE INSERT ON product
FOR EACH ROW BEGIN
SET NEW.created_date = now();
最善の策は、その列をタイムスタンプに変更することです。 MySQLは、行の最初のタイムスタンプを「最終変更」値として自動的に使用し、それを更新します。作成時間を節約したいだけなら、これは設定可能です。
ドキュメントを参照してください http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html
DELIMITER ;;
CREATE TRIGGER `my_table_bi` BEFORE INSERT ON `my_table` FOR EACH ROW
BEGIN
SET NEW.created_date = NOW();
END;;
DELIMITER ;
MySQL 5.6.X以降では、これを行うことができます。
ALTER TABLE `schema`.`users`
CHANGE COLUMN `created` `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ;
これにより、新しい行が挿入または更新されると、列が現在のタイムスタンプで更新されます。
MySQL Workbenchを使用している場合は、CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
のように、DEFAULT値フィールドに:
http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-5.html
Now()を使用することはお勧めできません。現在の時刻と日付のみを保存します。データを更新しても、現在の日付と時刻は更新されません。時間を1回追加する場合は、デフォルト値= Now()が最適なオプションです。タイムスタンプを使用する場合。行が更新されるたびにthis値を更新する必要があります。次に、トリガーを使用するのが最適なオプションです。
これらの2つのtoturialは、トリガーの実装に役立ちます。