检查类型的约束

时间:2014-05-30 12:15:22

标签: oracle constraints

我有这样的事情:

CREATE TYPE oAuthors AS OBJECT (
    ... ,
    contract CHAR(1),

    CONSTRUCTOR FUNCTION oAuthors (...
);

问题是我想添加约束以允许合同中只有0或1 我通过添加

在声明列之后立即尝试这样做
CONSTRAINT contract_bit CHECK (contract IN ('0','1')),

我也试过在一个ALTER句子里做,但问题是这不是一个表,所以它不会识别它,并且使用ALTER TYPE不起作用(虽然我只是在尝试,我不是我知道该怎么做。)

所以基本上我不知道这是否可以通过使用约束,我应该创建一个触发器还是什么?

1 个答案:

答案 0 :(得分:2)

您无法定义对象类型的约束: http://docs.oracle.com/cd/B28359_01/server.111/b28286/clauses002.htm

您可以通过两种方式在语法上定义约束:

  • 作为单个列或属性定义的一部分。这称为内联规范。
  • 作为表定义的一部分。这称为外线规范

Constraint子句可以出现在以下语句中:

  • CREATE TABLE(参见CREATE TABLE)
  • ALTER TABLE(参见ALTER TABLE)
  • 创建视图(请参阅创建视图)
  • ALTER VIEW(参阅ALTER VIEW)

以下是对对象强制执行约束的方法: http://docs.oracle.com/cd/B28359_01/appdev.111/b28371/adobjdes.htm#i452285