blob: 83b707130a9ca95e988e882d2ead003d16485d00 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
// file : odb/semantics/relational/foreign-key.hxx
// copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
// license : GNU GPL v3; see accompanying LICENSE file
#ifndef ODB_SEMANTICS_RELATIONAL_FOREIGN_KEY_HXX
#define ODB_SEMANTICS_RELATIONAL_FOREIGN_KEY_HXX
#include <odb/semantics/relational/elements.hxx>
#include <odb/semantics/relational/key.hxx>
namespace semantics
{
namespace relational
{
class foreign_key: public unameable, public key
{
public:
enum action
{
no_action,
cascade
};
foreign_key (string const& id,
qname const& referenced_table,
bool deferred,
action on_delete = no_action)
: unameable (id),
referenced_table_ (referenced_table),
deferred_ (deferred),
on_delete_ (on_delete)
{
}
public:
qname const&
referenced_table () const
{
return referenced_table_;
}
typedef std::vector<string> columns;
columns const&
referenced_columns () const
{
return referenced_columns_;
}
columns&
referenced_columns ()
{
return referenced_columns_;
}
public:
bool
deferred () const
{
return deferred_;
}
public:
action
on_delete () const
{
return on_delete_;
}
public:
virtual string
kind () const
{
return "foreign key";
}
private:
qname referenced_table_;
columns referenced_columns_;
bool deferred_;
action on_delete_;
};
}
}
#endif // ODB_SEMANTICS_RELATIONAL_FOREIGN_KEY_HXX
|