#!/usr/bin/perl
BEGIN {
$| = 1;
$^W = 1;
}
BEGIN { requires_sqlite(
'3.6.19'
) }
plan
tests
=> 17;
my
$dbh
= connect_ok(
RaiseError
=> 1,
PrintError
=> 0,
AutoCommit
=> 1 );
$dbh
->
do
(
"PRAGMA foreign_keys = ON"
);
ok
$dbh
->
do
("CREATE TABLE artist (
artistid INTEGER PRIMARY KEY,
artistname TEXT
)");
ok
$dbh
->
do
("CREATE TABLE track (
trackid INTEGER PRIMARY KEY,
trackname TEXT,
trackartist INTEGER,
FOREIGN KEY(trackartist) REFERENCES artist(artistid)
)");
ok insert_artist(1,
"Dean Martin"
);
ok insert_artist(2,
"Frank Sinatra"
);
ok insert_track(11,
"That's Amore"
, 1);
ok insert_track(12,
"Christmas Blues"
, 1);
ok insert_track(13,
"My Way"
, 2);
ok !insert_track(14,
"Mr. Bojangles"
, 3);
ok $@ =~
qr/foreign key constraint failed/
i;
ok insert_track(14,
"Mr. Bojangles"
,
undef
);
ok !update_track(3,
"Mr. Bojangles"
);
ok $@ =~ /foreign key constraint failed/i;
ok insert_artist(3,
"Sammy Davis Jr."
);
ok update_track(3,
"Mr. Bojangles"
);
ok insert_track(15,
"Boogie Woogie"
, 3);
sub
insert_artist { _do(
"INSERT INTO artist (artistid, artistname) VALUES (?, ?)"
,
@_
); }
sub
insert_track { _do(
"INSERT INTO track (trackid, trackname, trackartist) VALUES (?, ?, ?)"
,
@_
); }
sub
update_track { _do(
"UPDATE track SET trackartist = ? WHERE trackname = ?"
,
@_
); }
sub
_do {
eval
{
$dbh
->
do
(
shift
,
undef
,
@_
) }; }