下面粘贴的是我的 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
(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_insert_id
获取的值将没有任何意义。
通过在x,y,z
上放置一个唯一的键并使用insertignore
,你会得到更好的服务。尽管这仍然不会给你记录# 。
关于MySQL 插入不存在的地方不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26450387/