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 |
