CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)
这段代码有些看不懂,
虽然书上有解释:如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束,请使用下面的 SQL 语法
但还是不太懂,求高人说的详细点与洒家说来

解决方案 »

  1.   

    Id_P字段引用Persons表的Id_P作为外键约束。
      

  2.   


    CREATE TABLE Orders --创建表名为Orders的表
    (
    O_Id int NOT NULL,  --int字段
    OrderNo int NOT NULL,  --int字段
    Id_P int,   --int 字段
    PRIMARY KEY (O_Id),   --设置主键为O_Id
    CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)  --外键约束Persons表的Id_P字段
    REFERENCES Persons(Id_P)
    )
      

  3.   

    CREATE TABLE Orders
    (
    O_Id int NOT NULL,
    OrderNo int NOT NULL,
    Id_P int,
    PRIMARY KEY (O_Id),
    CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
    REFERENCES Persons(Id_P)

    )红色部分是将表orders的O_Id设置为主键列,可以直接写  O_Id int primary key,蓝色部分是加一个外键字段Id_P,关联到Persons表的Id_P主键字段
      

  4.   

    fk_PerOrders  是这个外键约束的名称!
      

  5.   

    可是这段代码哪个是多个列定义 FOREIGN KEY 约束?
      

  6.   

    CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
    就一列是外键 这个约束fk_PerOrders 的意思就是说 Orders 的 Id_P 是 Persons 的Id_P的子集 
      

  7.   

    你这个是单列的外键关联
    书上的意思是如果你要自己定义约束名称,或者多列外键关联,要使用这种写法:
    CONSTRAINT FK_PerOrders FOREIGN KEY (FieldName1,FieldName2) REFERENCES Persons(FieldName1,FieldName2)