处理sql错误(如果存在,如果存在约束),Perl

时间:2014-01-19 18:36:41

标签: mysql sql perl

我在我的网站上使用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';
}

插入行相同,并且存在具有相同数据的行。当然可以在插入时创建触发器并尝试返回一些代码。请给我这样的触发器的例子吗?再说一遍:如何处理这个错误?

请帮忙!抱歉我的英语不是很好:))

1 个答案:

答案 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脚本调用此过程,它将返回您在过程中放入的值。