2014-01-19 33 views
0

我在我的网站上使用perl和mysql。处理sql错误(如果存在,如果约束),Perl

如果连接到'删除'的数据存在,是否存在限制删除的机制?是 - 外键约束。如果行由于外键约束而未被删除,是否有可能返回一些代码? Somethink like this:

$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

如果你想要返回自己的成功/失败代码,那么你可以使用程序。创建一个过程

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脚本此过程中,它会回报你把你的程序的值。