Mysql 执行存储过程失败时出错

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

我在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
   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这是一个打字错误,我修正了这个问题。但是错误仍然是一样的!表中有数据吗?