返回列表 发帖

添加触发器无法插入数据

database中有food2表,在没出插入触发器时可以正常插入数据,然后创建以下触发器,再次往food2中插入数据时,显示[ERROR 1136 (21S01): Column count doesn't match value count at row 1],每次都是这个错误提示。

food2表格式为:
mysql> desc food2;
+---------------+-------------+------+-----+---------+----------------+
| Field         | Type        | Null | Key | Default | Extra          |
+---------------+-------------+------+-----+---------+----------------+
| id            | int(4)      | NO   | PRI | NULL    | auto_increment |
| name          | varchar(20) | NO   |     |         |                |
| company       | varchar(20) | YES  |     | NULL    |                |
| price         | float       | YES  |     | NULL    |                |
| produce_time  | year(4)     | YES  |     | NULL    |                |
| validity_time | int(4)      | YES  |     | NULL    |                |
| address       | varchar(50) | YES  |     | NULL    |                |
+---------------+-------------+------+-----+---------+----------------+
插入内容为:
mysql> insert into food2 values(null,"MX5","一汽马自达","27.96","2007",6,"日本")
;

触发器创建
mysql> create trigger food2_trigger before insert
    -> on food2 for each row
    -> insert into food2_event_info values(now());
Query OK, 0 rows affected (0.08 sec)
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

检查
insert into food2_event_info values(now());
插入的时候i是否正常。

TOP

触发器创建成功的,但是创建好以后insert报错
ERROR 1136 (21S01): Column count doesn't match value count at row 1

还请再次帮助谢谢

TOP

mysql> select * from food2_event_info;
+-----------+-------------+
| insert_id | insert_time |
+-----------+-------------+
|         1 | 20:10:40    |
+-----------+-------------+
1 row in set (0.00 sec)
触发器插入式成功的

TOP

回复 4# guji0327


    现在正常了?

TOP

还是没有正常,触发器没有问题,就是插入数据还以一样的问题
Column count doesn't match value count at row 1],每次都是这个错误提示。

不是很清楚具体原因,还望指教,麻烦了!谢谢

TOP

回复 6# guji0327


    我主要疑惑的是报错信息是food2表,还是food2_event_info?

TOP

是food2表,因为是往food2表中插入数据

麻烦您了!

TOP

回复 8# guji0327


    按照错误提示,是你向food2表插入的值的数量和food2的字段数不一致。
最好可以贴一下你的插入food2的SQL语句。

TOP

************************** 1. row ***************************
            id: 1
          name: 统一100
       company: 统一集团即统一企业
         price: 5.5
  produce_time: 2014
validity_time: 3
roduce_address: 台南市永康区中正路301号

这是未创建触发器之前所插入的数据
insert语句为【mysql> insert into food2 values(1,"统一100","统一集团即统一业","5.5",2014,3,"台南市永康区中正路301号");】
Query OK, 1 row affected (0.00 sec)


创建触发器成功以后,再向food2表中插入数据
insert语句为:
【mysql> insert into food2 values(null,"统一鲜橙多","统一集团即统一业","5.5",2014,3,"台南市永康区中正路301号");】
ERROR 1136 (21S01): Column count doesn't match value count at row 1

但是语句是一样的,还望指导!

TOP

回复 10# guji0327

我建议你在插入的时候指定一下字段吧。这样避免自动识别字段带来的错误。

TOP

mysql>  insert into food2
(id,name,company,price,produce_time,validity_time,produce_address)
values(1,"统一100","统一集团即统一业","5.5",2014,3,"台南市永康区中正路301号");
ERROR 1136 (21S01): Column count doesn't match value count at row 1

指定了字段还是显示这个匹配错误的问题,很是费解到底哪里错了呢~

food2的表属性字段
mysql> show create table food2\G
*************************** 1. row ***************************
       Table: food2
Create Table: CREATE TABLE `food2` (
  `id` int(4) NOT NULL auto_increment,
  `name` varchar(20) NOT NULL,
  `company` varchar(40) NOT NULL,
  `price` float NOT NULL,
  `produce_time` year(4) NOT NULL,
  `validity_time` int(4) NOT NULL,
  `produce_address` varchar(40) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

TOP

mysql>  insert into food2
(id,name,company,price,produce_time,validity_time,produce_address)
values(1,"统一100","统一集团即统一业","5.5",2014,3,"台南市永康区中正路301号");
ERROR 1136 (21S01): Column count doesn't match value count at row 1

指定了字段还是显示这个匹配错误的问题,很是费解到底哪里错了呢~

food2的表属性字段
mysql> show create table food2\G
*************************** 1. row ***************************
       Table: food2
Create Table: CREATE TABLE `food2` (
  `id` int(4) NOT NULL auto_increment,
  `name` varchar(20) NOT NULL,
  `company` varchar(40) NOT NULL,
  `price` float NOT NULL,
  `produce_time` year(4) NOT NULL,
  `validity_time` int(4) NOT NULL,
  `produce_address` varchar(40) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

TOP

回复 13# guji0327


    建议插入的时候,不要给id赋值。

TOP

mysql>  
insert into food2 values(null,"统一蜂蜜多","统一集团",3.5,2014,3," 台南市永康区中正路301号");
ERROR 1136 (21S01): Column count doesn't match value count at row 1

没有给ID赋值,直接用null,因为id是auto_increment
但是还是错误,这个问题有点麻烦啊~

TOP

返回列表