Board logo

标题: 添加触发器无法插入数据 [打印本页]

作者: guji0327    时间: 2014-1-30 15:31     标题: 添加触发器无法插入数据

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)
作者: fwbook    时间: 2014-1-31 08:47

检查
insert into food2_event_info values(now());
插入的时候i是否正常。
作者: guji0327    时间: 2014-2-1 20:06

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

还请再次帮助谢谢
作者: guji0327    时间: 2014-2-1 20:13

mysql> select * from food2_event_info;
+-----------+-------------+
| insert_id | insert_time |
+-----------+-------------+
|         1 | 20:10:40    |
+-----------+-------------+
1 row in set (0.00 sec)
触发器插入式成功的
作者: fwbook    时间: 2014-2-2 09:13

回复 4# guji0327


    现在正常了?
作者: guji0327    时间: 2014-2-2 23:48

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

不是很清楚具体原因,还望指教,麻烦了!谢谢
作者: fwbook    时间: 2014-2-3 08:26

回复 6# guji0327


    我主要疑惑的是报错信息是food2表,还是food2_event_info?
作者: guji0327    时间: 2014-2-3 14:18

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

麻烦您了!
作者: fwbook    时间: 2014-2-3 18:59

回复 8# guji0327


    按照错误提示,是你向food2表插入的值的数量和food2的字段数不一致。
最好可以贴一下你的插入food2的SQL语句。
作者: guji0327    时间: 2014-2-3 23:52

************************** 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

但是语句是一样的,还望指导!
作者: fwbook    时间: 2014-2-4 08:55

回复 10# guji0327

我建议你在插入的时候指定一下字段吧。这样避免自动识别字段带来的错误。
作者: guji0327    时间: 2014-2-4 21:35

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)
作者: guji0327    时间: 2014-2-4 21:35

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)
作者: fwbook    时间: 2014-2-5 15:27

回复 13# guji0327


    建议插入的时候,不要给id赋值。
作者: guji0327    时间: 2014-2-6 19:46

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
但是还是错误,这个问题有点麻烦啊~
作者: fwbook    时间: 2014-2-7 08:46

回复 15# guji0327


    我的意思是不要给id赋值,直接是
insert into food2(name,company,price,produce_time,validity_time,produce_address) values("统一蜂蜜多","统一集团",3.5,2014,3," 台南市永康区中正路301号");


这样试一下。




欢迎光临 万卷图书 (http://wanjuanchina.net/) Powered by Discuz! 7.0.0