Mercurial > pub > Impl
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 |