单列的多个约束

时间:2013-03-16 06:42:30

标签: sql oracle10g

我们可以在一个列上添加多个约束吗?

像 -

create table x(x varchar2(20), y number(2) not null,
constraint fk_cons foreign key(x) references user_info(user_id),
constraint null_cons not null(x)
)

此查询返回错误ora-00904:无效的标识符....

4 个答案:

答案 0 :(得分:3)

创建null_cons约束时语法错误:

使用此(表级检查约束):

CREATE TABLE x(
    x VARCHAR2(20), 
    y NUMBER(2) NOT NULL,
    CONSTRAINT fk_cons FOREIGN KEY(x) REFERENCES user_info(user_id),
    CONSTRAINT null_cons CHECK(x IS NOT NULL)
)

或(对列使用NOT NULL约束):

CREATE TABLE x(
    x VARCHAR2(20) NOT NULL, 
    y NUMBER(2) NOT NULL,
    CONSTRAINT fk_cons FOREIGN KEY(x) REFERENCES user_info(user_id)
)

或(使用列级检查约束):

CREATE TABLE x(
    x VARCHAR2(20) CHECK (X IS NOT NULL), 
    y NUMBER(2) NOT NULL,
   CONSTRAINT fk_cons FOREIGN KEY(x) REFERENCES user_info(user_id)
)

答案 1 :(得分:1)


    create table x(x varchar2(20), y number(2) not null,
    constraint fk_cons foreign key(x) references user_info(user_id),
    constraint null_cons check(x is not null)
    )

答案 2 :(得分:0)

create table x(x varchar2(20) not null, y number(2) not null,
    constraint fk_cons foreign key(x) references user_info(user_id)
)

答案 3 :(得分:0)

如果RDBMS是SQL Server,您可以通过执行此操作在列中定义多个约束(我更改了一些列名称以使约束命名策略更加明显 - 命名是主观的):

CREATE TABLE SomeTable(
    User_Id VARCHAR(20) CONSTRAINT FK_SomeTable_User_Id FOREIGN KEY REFERENCES dbo.User_Info(User_Id) CONSTRAINT UIX_NC_SomeTable_User_id  NONCLUSTERED NOT NULL, 
    SomeOtherColumn DECIMAL(2, 0) NOT NULL
)