我在我的网站上使用perl和mysql。
如果存在连接到“删除”的数据,是否存在限制删除的机制?是 - 外键约束。如果由于外键约束而未删除行,是否可以返回一些代码?有人这样想:
$id = $cgi->param("id");
$query="delete from `Class` where `id` = '$id'";
$sth = $dbh->prepare($query);
$sth->execute or die(print $sth->errstr);
if ($sth->errcode eq '777')
{
print 'error! there are 1 or more rows, connected with row you want to delete';
}
else
{
print 'ok! deleted';
}
插入行相同,并且存在具有相同数据的行。当然可以在插入时创建触发器并尝试返回一些代码。请给我这样的触发器的例子吗?再说一遍:如何处理这个错误?
请帮忙!抱歉我的英语不是很好:))
答案 0 :(得分:1)
如果您想返回自己的成功/失败代码,那么您可以使用程序。创建程序
delimiter $$
CREATE PROCEDURE `deleteProcedure`(in Id INT)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
select 0; -- number that you want to return on failure
ROLLBACK;
END;
START TRANSACTION;
-- put any number of statement, including delete, insert, update
delete from `Class` where `id` = Id;
COMMIT;
select 1; -- number that you want to return on success
END$$
从perl脚本调用此过程,它将返回您在过程中放入的值。