重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
mysql建表时如果要设置自动递增(auto_increment),必须是主键(PRIMARY KEY)设置,不能为NULL,且只能设置一个。
成都创新互联从2013年创立,是专业互联网技术服务公司,拥有项目成都网站制作、网站建设、外贸网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元陕西做网站,已为上家服务,为陕西各地企业和个人服务,联系电话:028-86922220
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key。
这个错误的意思是:#1075-表定义不正确;只能有一个自动列,必须将其定义为主键。
如果出现此错误需要检查建表语句,如果设置了自增,需要把自增字段设置成主键。
扩展资料
MYSQL中AUTO_INCREMENT会在新记录插入表中时生成一个唯一的数字。希望在每次插入新记录时,自动地创建主键字段的值,可以在表中创建一个 auto-increment 字段。
mysql创建自增主键表的建表语句举例:
CREATE TABLE `tablename` (
`id` int(11) NOT NULL AUTO_INCREMENT , PRIMARY KEY (`id`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
有两个问题
1、参数中varchar要定义几个字符,如varchar(20)
2、mysql的注释方式没有//,只有/**/和#
3、存储过程的前后要先定义分隔符DELIMITER ;;
因此最终结果:
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `NewProc`(IN `spid` int,IN `spprice` varchar(20),IN `spnum` varchar(20))
BEGIN
DECLARE wareid INT; #定义三个变量
DECLARE num1 INT;
DECLARE num2 INT;
DECLARE cursor_invent CURSOR FOR SELECT goodsid FROM goods; /*定义游标 返回参数对应的商品 id*/
OPEN cursor_invent;
REPEAT
FETCH cursor_invent INTO wareid; #将id赋值给wareid
IF wareid=spid
THEN
SET num1=CONVERT(inventnum,SIGNED); #varchar转化成int
SET num2=CONVERT(spnum,SIGNED);
UPDATE invent SET inventnum=CONCAT(num1+num2) WHERE inventid=spid; #如果存在同名商品那么原有数量+现有数量
ELSE INSERT INTO invent(goodsid,inventnum,inventprice) values(spid,spprice,spnum); #不存在就直接插入一条记录
END IF;
UNTIL cursor_invent END REPEAT;
CLOSE cursor_invent;
END
;;
DELIMITER ;
MySQL表中插入数据不会不保存的
只要提示:
Query OK, 0 rows affected (0.00 sec)
说明就是插入成功了
要么就是你插错表了。
要么就是你的数据库的容量不够了(就是磁盘空间不足),那也提示报错的。
你还是要把具体的情况说清楚,不然没人能回答你这个问题