oracle数据库可以以两种声明方式创建6种类型的约束。
1>. not null constraint 保证数据值不为空。
2>. unique constraint 保证该列或组合的多列值唯一,可以有部分值为空。
3>. primary key constraint 是not null 和 unique的组合使用,也就是将这两种约束使用到同一列
上。
4>. foreign key constraint 引用的值在另外一个表中也出现过。
5>. check constraint 保证数据值在指定的条件中。
6>. ref constraint 引用其它的表或对象类型。
两种方式是:
1>. 在列内部定义, inline (not null constraint必须在inline定义,其它可以在外部定义。)
2>. 在列外部定义, out-of-line
-----------------------------------------------------------
外部约束oracle语法:
out_of_line_constraint::=
[ constraint constraint_name ]
{ unique (column [, column ]...)
| primary key (column [, column ]...)
| foreign key (column [, column ]...)
references_clause
| check (condition)
}
[ constraint_state ]
references_clause::=
references [ schema. ] { object_table | view }
[ (column [, column ]...) ]
[on delete { cascade | set null } ]
[ constraint_state ]
constraint_state::=
[ [ [ not ] deferrable ]
[ initially { immediate | deferred } ]
| [ initially { immediate | deferred } ]
[ [ not ] deferrable ]
]
[ rely | norely ]
[ using_index_clause ]
[ enable | disable ]
[ validate | novalidate ]
[ exceptions_clause ]
-------------------------------------------------------------------
unique constraint 限制:
1>. 以下数据类型不可以使用unique constraint:
lob(clob, blob), long, long raw, varray, nested table, object, ref, timestamp with time
zone, or user-defined type. 可以使用到timestamp with local time zone类型中。
2>. 复合unique键不可以超过32列。
3>. 不可以在同一列或多列上同时使用primary key, unique constraint.
4>. you cannot specify a unique key when creating a subview in an inheritance hierarchy.
the unique key can be specified only for the top-level (root) view.
primary key constraint 限制:
1>. 一个表或视图只可以有一个主键。
2>. lob(clob, blob), long, long raw, varray, nested table, bfile, ref, timestamp with time
zone, or user-defined type不可以是主键. timestamp with local time zone可以是主键。
3>. 主键的长度不可以超过一个数据块。
4>. 复合主键不能超过32列。
5>. 不可以在一列或多列上同时有主键和唯一约束。
6>. you cannot specify a primary key when creating a subview in an inheritance hierarchy.
the primary key can be specified only for the top-level (root) view.
foreign key constraint 限制:
一个表或视图包含的外键被称为子对象,同时该表或视图包含的引用键称为父对象。外键的对象可以是
本身,这时子表(视图)和父表(视图)都其本身。如果没有指定父表(视图)中的外键,侧自动采用该
表的主键。
阅读(1643) | 评论(0) | 转发(0) |