Mysql 执行存储过程失败时出错
我在mysql数据库中创建了一个存储过程,它触发多个insert语句 如下图所示:Mysql 执行存储过程失败时出错,mysql,stored-procedures,Mysql,Stored Procedures,我在mysql数据库中创建了一个存储过程,它触发多个insert语句 如下图所示: DELIMITER // DROP PROCEDURE IF EXISTS insert_user_group_info // CREATE PROCEDURE insert_group_user_info(groupname varchar(50), groupdesc varchar(100), createddate varchar(50), createdby varchar(100)) BEGIN
DELIMITER //
DROP PROCEDURE IF EXISTS insert_user_group_info
//
CREATE PROCEDURE insert_group_user_info(groupname varchar(50), groupdesc varchar(100),
createddate varchar(50), createdby varchar(100))
BEGIN
DECLARE RETURN_VAL INT UNSIGNED DEFAULT 0;
DECLARE NEWGROUPID INT UNSIGNED DEFAULT 0;
START TRANSACTION;
Insert into group_tbl (`groupname`,
`groupdesc`,
`groupusers`,
`createdon`,
`createdby`,
`groupstatus`)
values
(groupname,
groupdesc,
'1',
createddate,
createdby,
'1');
SET NEWGROUPID = LAST_INSERT_ID();
INSERT INTO useringroup_tbl
( groupid,
username,
regdate,
joindate,
userstatus,
roleid)
VALUES
( NEWGROUPID,
createdby,
createddate,
createddate,
'1',
'1');
INSERT INTO userinrole_tbl
( username,
groupid,
roleid)
VALUES
(createdby,
NEWGROUPID,
'1');
SET RETURN_VAL = LAST_INSERT_ID();
SELECT RETURN_VAL;
COMMIT;
END//
DELIMITER ;
表的模式如下所示
表1分组
CREATE TABLE `group_tbl`
(
`groupid` int(11) NOT NULL auto_increment,
`groupname` varchar(50) NOT NULL,
`groupdesc` varchar(100) NOT NULL,
`groupusers` int(11) NOT NULL,
`createdon` datetime NOT NULL,
`createdby` varchar(50) NOT NULL,
`groupstatus` tinyint(4) NOT NULL,
PRIMARY KEY (`groupid`)
);
表2用户组tbl
CREATE TABLE `group_tbl`
(
`groupid` int(11) NOT NULL auto_increment,
`groupname` varchar(50) NOT NULL,
`groupdesc` varchar(100) NOT NULL,
`groupusers` int(11) NOT NULL,
`createdon` datetime NOT NULL,
`createdby` varchar(50) NOT NULL,
`groupstatus` tinyint(4) NOT NULL,
PRIMARY KEY (`groupid`)
);
CREATE TABLE IF NOT EXISTS `useringroup_tbl`
(
`groupid` int(11) NOT NULL,
`username` varchar(50) NOT NULL,
`regdate` datetime NOT NULL,
`joindate` datetime NOT NULL default '0000-00-00 00:00:00',
`userstatus` tinyint(4) NOT NULL,
`closingdate` datetime NOT NULL default '0000-00-00 00:00:00',
`roleid` int(11) NOT NULL default '0',
PRIMARY KEY (`groupid`,`username`)
);
表3用户角色
CREATE TABLE IF NOT EXISTS `userinrole_tbl`
(
`id` int(11) NOT NULL auto_increment,
`username` varchar(50) NOT NULL,
`groupid` int(11) NOT NULL,
`roleid` int(11) NOT NULL,
PRIMARY KEY (`id`)
);
在通过此语句执行此过程时
call insert_group_user_info('test name','test description','2015-05-10 12:10:12','XYZuser')
我犯了一个错误
1062-密钥1的重复条目“1-XYZuser”
每次输入时,用户名后面的数字都会增加
像这样
1062-密钥1的重复条目“2-XYZuser”
所以如果有人能告诉我我做错了什么
提前感谢。根据您粘贴的错误 1062-重复条目“1-XYZuser”-主键组ID,用户名-是否截断表并不重要。您可能再次插入相同的数据。 您可能错误地使用了最后一个插入id。
为什么useringroup tbl中没有自动增量?您可能在其中一个表中有一个唯一的键。@uEERDO我截断了所有的表还是同一个错误!第二个查询应该给您一个不同的错误。createdon不存在,无法包含在值列表中。@uuerdo这是一个打字错误,我修正了这个问题。但是错误仍然是一样的!表中有数据吗?