| | 343 | sub multikey_unique : Tests(1) { |
|---|
| | 344 | my $self = shift; |
|---|
| | 345 | $self->_setup_table('Ddltest::Multikey'); |
|---|
| | 346 | |
|---|
| | 347 | my $orig = Ddltest::Multikey->new(); |
|---|
| | 348 | $orig->set_values({ |
|---|
| | 349 | fkey => 7, |
|---|
| | 350 | type => 'awesome', |
|---|
| | 351 | value => 'these truths', |
|---|
| | 352 | }); |
|---|
| | 353 | $orig->save or die "Could not save original multikey instance: ", $orig->errstr; |
|---|
| | 354 | |
|---|
| | 355 | # Test empirically if the multifield primary key is uniquely constrained |
|---|
| | 356 | # by trying to insert another. |
|---|
| | 357 | my $driver = MT::Object->dbi_driver; |
|---|
| | 358 | my $dbh = $driver->rw_handle; |
|---|
| | 359 | my $dbd = $driver->dbd; |
|---|
| | 360 | |
|---|
| | 361 | my $table_name = Ddltest::Multikey->table_name; |
|---|
| | 362 | my $sql = join q{ }, 'INSERT INTO', $table_name, '(', |
|---|
| | 363 | join(q{, }, map { $dbd->db_column_name($table_name, $_) } qw( fkey type value )), |
|---|
| | 364 | ') VALUES (?, ?, ?)'; |
|---|
| | 365 | my $ret = eval { $dbh->do($sql, {}, 7, 'awesome', 'self-evident') ? 1 : 0 }; |
|---|
| | 366 | my $err = $ret ? q{} |
|---|
| | 367 | : defined $ret ? $dbh->errstr |
|---|
| | 368 | : $@ |
|---|
| | 369 | ; |
|---|
| | 370 | ok(!$ret, q{Duplicate multikey instance wouldn't insert}); |
|---|
| | 371 | diag('Saving error: ', $err) if !$ret; |
|---|
| | 372 | } |
|---|
| | 373 | |
|---|