perl DBI MySQL删除语句具有奇怪的效果

时间:2017-12-15 18:32:08

标签: mysql perl sql-delete dbi

尝试删除一个MySQL表时,我有一个非常奇怪的效果。

表relPartner具有以下结构:

|-------------------------------------------|
| id | keyArtikel | keyPartner | Date       |
|.....................................------|
|  1 |      19670 |        116 | 2017-06-25 |
|  2 |      17942 |        116 | 2017-06-25 |
|  3 |      19416 |        116 | 2017-06-25 |
|  4 |      12286 |        116 | 2017-06-26 |
|  5 |      19848 |        127 | 2017-06-26 |
|  6 |      12968 |        127 | 2017-06-26 |
|  7 |      19859 |        127 | 2017-12-15 |
|  8 |      17942 |        119 | 2017-12-15 |
|  9 |      19678 |        119 | 2017-12-15 |
|-------------------------------------------|

相关的perl代码段:

my $relPartner = 9; # for testing try to delete row with id 9

my $data->{Result} = 'Success'; # Ajax Response

my $sql_query = 'DELETE FROM relPartner WHERE id = ?'

my $in = $dbh->do( $sql_query, undef, $relPartner );

if ((!defined ($in)) || (!$in)) {  
    $data->{Result} = 'Failed' 
} else {
    $data->{data}->{affectedRows} = $in;
    $data->{data}->{relPartner} = $relPartner;
}

我得到以下结果

{
    "data":
        {
            "affectedRows":"1",
            "relPartner":"9"
        },
    "Result":"Success"
}

DBI记录以下结果:

DEBUG - $do(0) = ['DELETE FROM relPartner WHERE id = ?
',undef,9];
DEBUG - affected(0): 1
DEBUG - disconnect(0)

所以我认为第9行被删除了。但是当我看到桌子时,第9行仍然存在。

我在两个不同的系统MySQL服务器版本上测试了它:5.5.54-0ubuntu0.12.04.1和5.7.20-0ubuntu0.17.04.1并获得相同的效果/结果。

但是在其他表中,具有相同代码的delete命令与预期的一样工作。

所以我希望任何人都有一个想法,并可以解释我的误解在哪里。

0 个答案:

没有答案