こんにちは私は次のようなテーブル構造を持っています
CREATE TABLE IF NOT EXISTS `history` (
`order_product_id` varchar(20) NOT NULL,
`Details` text NOT NULL,
PRIMARY KEY (`order_product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `order_product` (
`order_product_id` varchar(64) NOT NULL,
`porder_status` int(11) NOT NULL,
PRIMARY KEY (`order_product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `order_product` (`order_product_id`, `porder_status`) VALUES
('1339789127O532877', 11),
('1339789127O532933', 2),
('1339868495O010300', 2),
('1339868495O010342', 0),
('1339869923O564839', 0);
次に、order_product.porder_statusの値を更新すると起動し、order_product.porder_statusの値を履歴テーブルに挿入/更新するトリガーを作成します。
DELIMITER $$
CREATE TRIGGER addtohistory
AFTER UPDATE ON order_product
FOR EACH ROW
BEGIN
INSERT INTO history (order_product_id,Details)
values
(NEW.order_product_id,CONCAT_WS(':',NEW.porder_status,CURRENT_TIMESTAMP))
ON DUPLICATE KEY UPDATE
Details =
CONCAT_WS(',',Details,CONCAT_WS(':',NEW.porder_status,CURRENT_TIMESTAMP));
END;$$
トリガーを作成しているときは、クエリが正常に実行されたと言っていますSHOW triggers
。結果の実行時にNothingであるため、データベースにトリガーが存在しないと結論付けます。どこを間違えているのかわかりません。バグを見つけるのを手伝ってください。MySQLServer5.5でinnodbenginを使用しています。
前もって感謝します。
とった。
DROP TRIGGER IF EXISTS `addtohistory`;
DELIMITER $$
CREATE TRIGGER `addtohistory` AFTER UPDATE ON `order_product`
FOR EACH ROW BEGIN
INSERT INTO history (order_product_id,Details) values (NEW.order_product_id,CONCAT_WS(':',NEW.porder_status,CURRENT_TIMESTAMP)) ON DUPLICATE KEY UPDATE Details = CONCAT_WS(',',Details,CONCAT_WS(':',NEW.porder_status,CURRENT_TIMESTAMP));
END
$$
DELIMITER ;
わかりませんが、上記の式を実行して動作します。