0
我在插入觸發器後遇到問題。當我在表格中插入數據時,它應該自動更新日期,它應該是當前日期。但是當我執行下面的查詢時,它在我的表中無法正常工作。 第i個創建的表:插入觸發器當前日期未更新後
DROP TABLE IF EXISTS `ignite`.`products`;
CREATE TABLE `ignite`.`products`(
`products_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`products_model` varchar(30) NOT NULL,
`model_hash` bigint(20) unsigned NOT NULL,
`Product_name` varchar(45) NOT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`products_id`)
) ENGINE=MyISAM AUTO_INCREMENT=977 DEFAULT CHARSET=latin1;
然後創建該觸發:
use ignite;
CREATE TRIGGER created_date BEFORE INSERT ON products
FOR EACH ROW
SET NEW.created = NOW();
但是當我插入此表中的數據:
use ignite;
INSERT INTO products
(products_id, products_model, model_hash, Product_name)
values
(123, "456645", 457567, "awetert");
這是示出了以下錯誤:
field 'created' does not have default value. error-1364
您的觸發器設置爲在插入之前運行,但您想要更新的這些行尚未存在。另外,由於您可以將創建的列的默認值設置爲CURRENT_TIMESTAMP,因此使用觸發器可以完全不需要更新日期 – WebChemist