CREATE TABLE [Orders] (
[OrderID] [int] IDENTITY (1, 1) NOT NULL ,
[CustomerID] [nchar] (5) COLLATE Chinese_PRC_CI_AS NULL ,
[EmployeeID] [int] NULL ,
[OrderDate] [datetime] NULL ,
[RequiredDate] [datetime] NULL ,
[ShippedDate] [datetime] NULL ,
[ShipVia] [int] NULL ,
[Freight] [money] NULL CONSTRAINT [DF_Orders_Freight] DEFAULT (0),
[ShipName] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL ,
[ShipAddress] [nvarchar] (60) COLLATE Chinese_PRC_CI_AS NULL ,
[ShipCity] [nvarchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[ShipRegion] [nvarchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[ShipPostalCode] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[ShipCountry] [nvarchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_Orders] PRIMARY KEY  CLUSTERED 
(
[OrderID]
)  ON [PRIMARY] ,
CONSTRAINT [FK_Orders_Customers] FOREIGN KEY 
(
[CustomerID]
) REFERENCES [Customers] (
[CustomerID]
),
CONSTRAINT [FK_Orders_Employees] FOREIGN KEY 
(
[EmployeeID]
) REFERENCES [Employees] (
[EmployeeID]
),
CONSTRAINT [FK_Orders_Shippers] FOREIGN KEY 
(
[ShipVia]
) REFERENCES [Shippers] (
[ShipperID]
)
) ON [PRIMARY]
GO

解决方案 »

  1.   

    Create database cat
    go
    use cat
    go
    CREATE TABLE s(s# int not null primary key,s_name varchar(8) not null)
    go
    CREATE TABLE c (c# int not null primary key,c_name varchar(8) not null)
    go
    CREATE TABLE cs(c# int not null,s# int not null,cj tinyint not null default(0),
    primary key (c#,s#),foreign key(s#) references s(s#),foreign key(c#) references c(c#))
    goinsert s values(1,'saa')
    insert c values(1,'caa')--这句是对的
    insert cs values(1,1,86)--这句是错的,sql会报错,应为s表的s#列里没有2
    insert cs vlaues(2,1,45)
      

  2.   

    建立外键是为列中的数据提供引用完整性的约束。FOREIGN KEY 约束要求列中的每个值在被引用表中对应的被引用列中都存在。FOREIGN KEY 约束只能引用被引用表中为 PRIMARY KEY 或 UNIQUE 约束的列或被引用表中在 UNIQUE INDEX 内引用的列。