comparison Lib/IMPL/SQL/Schema/Traits.pm @ 272:47db27ed5b43

sync
author sergey
date Mon, 28 Jan 2013 17:24:37 +0400
parents 56364d0c4b4f
children 2f06250bab5f
comparison
equal deleted inserted replaced
271:56364d0c4b4f 272:47db27ed5b43
471 471
472 # проверяем, что в таблице есть все столбцы для создания ограничения 472 # проверяем, что в таблице есть все столбцы для создания ограничения
473 return 0 if grep not($_), @columns; 473 return 0 if grep not($_), @columns;
474 474
475 if (is($constraint,FK)) { 475 if (is($constraint,FK)) {
476 warn "FK";
477 my $foreignTable = $schema->GetTable($constraint->{foreignTable}) 476 my $foreignTable = $schema->GetTable($constraint->{foreignTable})
478 or return 0; 477 or return 0;
479 478
480 warn "Table OK";
481 my @foreignColumns = map $foreignTable->GetColumn($_), @{$constraint->{foreignColumns}||[]}; 479 my @foreignColumns = map $foreignTable->GetColumn($_), @{$constraint->{foreignColumns}||[]};
482 480
483 # внешняя таблица имеет нужные столбцы 481 # внешняя таблица имеет нужные столбцы
484 return 0 482 return 0
485 if grep not($_), @foreignColumns; 483 if grep not($_), @foreignColumns;
486 484
487 warn "FK Columns OK"; 485 # типы столбцов во внешней таблице совпадают с типами столбцов ограничения
488
489 return 0 486 return 0
490 if grep not($columns[$_]->type->SameValue($foreignColumns[$_]->type)), (0 .. $#columns); 487 if grep not($columns[$_]->type->SameValue($foreignColumns[$_]->type)), (0 .. $#columns);
491
492 warn "FK Columns types OK";
493 } 488 }
494 489
495 return 1; 490 return 1;
496 } 491 }
497 492