Код perl
дает мне количество строк, затронутых как 1, хотя запись игнорируется оператором sql из-за PRIMARY KEY CONSTRAINT
при вставке в базу данных sqlite с использованием модуля DBI.
my $stmt = 'INSERT OR IGNORE INTO table1 (ID, Name) VALUES (?,?)';
my $sth = $dbh->prepare($stmt);
$sth->bind_param( 1, $id, SQL_VARCHAR );
$sth->bind_param( 2, $name, SQL_VARCHAR );
my $row = $sth->execute() or die $DBI::errstr;
print "Row affected for id[$id]- $row\n";
Он всегда дает мне $row как 1 для набора данных ниже, где ID & NAME
являются составным первичным ключом.
ID NAME
1 AAA
1 BBB
1 AAA
2 BBB
2 BBB
что-то не так я делаю здесь. Мне нужно выполнить другой раздел кода на основе значения 0f $row, которое равно 0 в случае IGNORE и 1 в случае INSERTION.
Есть ли другой способ справиться с этим?
INSERT OR IGNORE
. Затем вы можетеselect *
во 2-й таблице, и тогда вы сможете подсчитать строки, затронутыеINSERT OR IGNORE
. - person jimtut   schedule 24.06.2014