0

After Insert トリガーに問題があります。テーブルにデータを挿入すると、日付が自動的に更新され、現在の日付になるはずです。しかし、次のクエリを実行すると、テーブルで正しく機能しません。最初にテーブルを作成しました:

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
4

1 に答える 1

0

これは、INSERTステートメントに値が含まれていないためcreatedです。たとえば、日時値がゼロの場合に含める必要があります。

INSERT INTO products
(products_id, products_model, model_hash, Product_name, created)
values
(123, "456645", 457567, "awetert", "0000-00-00 00:00:00");
于 2012-12-10T05:48:05.523 に答える