2

可能重复:
如何在 SQL 中对同一表的列强制执行外键约束

表格1

Column1 Column2  Column3 
 1        value  1
 2        value  1
 3        value  2

在同一个表中,第 1 列是主键,但第 3 列的值必须来自第 1 列。如何创建这样的表。

4

3 回答 3

2

可能你正在寻找self referencing table

create TABLE MyTable
(
   Column1 NUMBER,
   Column2 varchar2(30),
   Column3 NUMBER,
   PRIMARY KEY(column1),
   CONSTRAINT fk_column1_2
    FOREIGN KEY (column3)
    REFERENCES MyTable (column1)

);
于 2012-11-22T09:53:21.327 回答
2

如果您的表已经存在,那么您需要运行几个 ddl 语句

CREATE TABLE TABLE_1 
    ( 
     column1 NUMBER (4)  NOT NULL , 
     column2 VARCHAR2(20)  NOT NULL , 
     column3 NUMBER (4) 
    ) 
;


ALTER TABLE TABLE_1 
    ADD CONSTRAINT TABLE_1_PK PRIMARY KEY ( column1) ;



ALTER TABLE TABLE_1 
    ADD CONSTRAINT TABLE_1_TABLE_1_FK FOREIGN KEY 
    ( 

     column3
    ) 
    REFERENCES TABLE_1 
    ( 
     column1
    ) 
;
于 2012-11-22T09:57:17.503 回答
0

您可以使用 CHECK Constraint 执行此操作:

CREATE TABLE TEST (
 a number,
 b number,
 CONSTRAINT CKAEQUALB CHECK (a = b)
);
于 2012-11-22T09:57:18.377 回答