Mercurial > pub > Impl
comparison Lib/IMPL/SQL/Schema/Constraint/PrimaryKey.pm @ 32:56cef8e3cda6
+1
author | Sergey |
---|---|
date | Mon, 09 Nov 2009 01:39:31 +0300 |
parents | |
children | 16ada169ca75 |
comparison
equal
deleted
inserted
replaced
31:d59526f6310e | 32:56cef8e3cda6 |
---|---|
1 package IMPL::SQL::Schema::Constraint::PrimaryKey; | |
2 use strict; | |
3 use base qw(IMPL::SQL::Schema::Constraint::Index); | |
4 use IMPL::Class::Property; | |
5 use IMPL::Class::Property::Direct; | |
6 | |
7 __PACKAGE__->PassThroughArgs; | |
8 | |
9 BEGIN { | |
10 public _direct property ConnectedFK => prop_get; | |
11 } | |
12 | |
13 sub CTOR { | |
14 my ($this,%args) = @_; | |
15 | |
16 $this->SUPER::CTOR(%args); | |
17 | |
18 $this->{$ConnectedFK} = {}; | |
19 } | |
20 | |
21 sub ConnectFK { | |
22 my ($this,$FK) = @_; | |
23 | |
24 UNIVERSAL::isa($FK,'IMPL::SQL::Schema::Constraint::ForeignKey') or die new Exception('Aprimary key could be connected only to a foreign key'); | |
25 not exists $this->{$ConnectedFK}->{$FK->UniqName} or die new Exception('This primary key already conneted with the specified foreing key',$FK->Name,$FK->Table->Name); | |
26 | |
27 $this->{$ConnectedFK}->{$FK->UniqName} = $FK; | |
28 } | |
29 | |
30 sub DisconnectFK { | |
31 my ($this,$FK) = @_; | |
32 | |
33 delete $this->{$ConnectedFK}->{$FK->UniqName}; | |
34 } | |
35 | |
36 sub Dispose { | |
37 my ($this) = @_; | |
38 | |
39 delete $this->{$ConnectedFK}; | |
40 $this->SUPER::Dispose; | |
41 } | |
42 | |
43 1; |