我有表 T1
ID CHAR(10)
NAME CHAR(10)
SC CHAR(10)
取值为 0 或 1 取1时为无效标志
要求是 在SC 为1 时 NAME是唯一的,不能重复

解决方案 »

  1.   

    CREATE TABLE T1(
    ID VARCHAR2(10) PRIMARY KEY,
    NAME VARCHAR2(100),
    SC VARCHAR2(10) NOT NULL
    CONSTRAINT CK_SC CHECK (SC = 0 OR SC =1),
    CONSTRAINT UNI_NAME_SC UNIQUE (NAME, SC)
    );
    --测试:
    INSERT INTO T1 VALUES ('1','名字1','1');
    --报错: 违反约束CK_SC
    INSERT INTO T1 VALUES('2','名字2','2');
    --报错:违反约束UNI_NAME_SC
    INSERT INTO T1 VALUES('3','名字1','1');
    --成功:符合条件
    INSERT INTO T1 VALUES('4','名字2','1');