不存在的MySQL插入不起作用
下面粘贴的是我的MySQL存储过程不存在的MySQL插入不起作用,mysql,perl,insert,not-exists,Mysql,Perl,Insert,Not Exists,下面粘贴的是我的MySQL存储过程 CREATE PROCEDURE `newrig`( IN x varchar(10), IN y varchar (10), IN z varchar(5), OUT a INT ) BEGIN INSERT INTO rig (Name, Model,Type) SELECT * from (SELECT x,y,z) as tmp WHERE NOT EXISTS (SE
CREATE PROCEDURE `newrig`(
IN x varchar(10),
IN y varchar (10),
IN z varchar(5),
OUT a INT
)
BEGIN
INSERT INTO rig (Name, Model,Type)
SELECT * from (SELECT x,y,z) as tmp
WHERE NOT EXISTS
(SELECT * FROM rig where Name=x
AND Model=y
AND Type=z);
SELECT LAST_INSERT_ID() INTO a;
END
这就是我从perl中调用它的方式
$hDb->do( "call newrig( 'krish','xx','j',\@a);" );
结果是,;它不会将数据插入表中。有人能帮忙吗?首先:
INSERT INTO rig (Name, Model,Type) values (x,y,z)
WHERE NOT EXISTS
(SELECT * FROM rig where Name=x
AND Model=y
AND Type=z);
请注意,如果记录已经存在,则为last\u insert\u id
获取的值将毫无意义
在x,y,z
上放置一个唯一的键并使用insert ignore
会更好地为您服务。。尽管这仍然不能给你记录
阅读并获取更多有关此操作的信息。第一个猜测是表中已经存在值。MySQL需要在“values(x,y,z)”后加一个分号和一个END。如果没有where not exists条款,它对我就不起作用。如果记录存在,插入忽略技术将要求我检查最后一个插入id。此外,如果我的主键设置为自动递增,并且PK是记录的唯一键,我想知道插入忽略是否会忽略插入。