尝试删除一个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命令与预期的一样工作。
所以我希望任何人都有一个想法,并可以解释我的误解在哪里。