0

メインテーブルが更新されたときにタイムスタンプをログテーブルに記録するトリガーを設定しようとしています。cmというメインテーブルがあり、タイムスタンプ列のあるログテーブルがあります。

ログテーブルのタイムスタンプ列は次のように設定されます。

ALTER TABLE log ADD COLUMN modified_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

私が試したトリガーは次のとおりですが、このエラー「エラーコード1193。不明なシステム変数'modified_timestamp'」がスローされます。

引き金:

DELIMITER //
CREATE TRIGGER `ahrq cm`.`table_timestamp` BEFORE UPDATE ON `ahrq    cm`.`ahrq_inventory_all`
FOR EACH ROW begin

set log.modified_timestamp=CURRENT_TIMESTAMP();

end
//

誰かがこのエラーに光を当てることができますか?

4

2 に答える 2

1

トリガーはlog、通常のSQLコマンドを使用してテーブルを更新する必要があります。

DELIMITER //
CREATE TRIGGER `ahrq cm`.`table_timestamp` BEFORE UPDATE ON `ahrq cm`.`ahrq_inventory_all`
FOR EACH ROW begin

INSERT INTO log (modified_timestamp) VALUES (CURRENT_TIMESTAMP());

end
//
于 2012-04-24T14:54:12.667 に答える
0

set は、変数 (ユーザー、システム、または格納されたルーチン変数) の値を設定するために使用されます。

ログ テーブルのフィールドを更新するには、次のような UPDATE クエリを発行する必要があります。

UPDATE log SET modified_timestamp = CURRENT_TIMESTAMP() WHERE ...
于 2012-04-24T14:56:38.083 に答える