问个SQL问题

----建库---
create database OnlineTrading
on 
(name=OnlineTrading_dat,
filename='d:\数据库实训\OnlineTrading_dat.mdf',
size=10,
maxsize=50,
filegrowth=20%)
log on
(name=student1_log,
filename='d:\数据库实训\OnlineTrading_log.ldf',
size=4,
maxsize=25,
filegrowth=5)

--------建表-Users---------
create table Users
(US_ID VARCHAR(10) primary key,
US_NAME VARCHAR(20) NOT NULL,
US_PSWRD VARCHAR(20) NOT NULL,
US_EMAIL VARCHAR(40) check(US_EMAIL like '%@%'),
US_REALNAME VARCHAR(20) NOT NULL,
US_SEX int check(US_SEX in(0,1)) default(1),----用户性别(女为1,男为0)
US_IDCARD NUMERIC(18,0) Not Null,---代表18位数字,小数位数为0
US_TEL VARCHAR(16),
US_ADDRESS VARCHAr(100),
US_FAX VARCHAR(10) )

--------建表-Distribution---------
create table Distribution
(Dis_ID VARCHAR(10) ,
US_ID VARCHAR(10) foreign key references Users(US_ID),
Dis_ReceiveName VARCHAR(20) NOT NULL,
Dis_Address VARCHAR(MAX) NOT NULL,
Dis_TEL VARCHAR(20) NOT NULL,
Dis_TIME VARCHAR(50) NOT NULL,
Dis_FAX VARCHAR(10),
constraint pk_Distribution primary key(Dis_ID,US_ID) )

--------建表-Goods---------
create table Goods
(Goods_ID VARCHAR(10) primary key,
Goods_Name VARCHAR(20) not Null,
Goods_Price money check(Goods_Price> 0),
Goods_INF VARCHAR(MAX) NOT NULL )

--------建表-Buy---------
create table Buy
(Goods_ID VARCHAR(10) foreign key references Goods(Goods_ID),
US_ID VARCHAR(10) foreign key references Users(US_ID),
Buy_NUM Int NOT NULL,
Buy_Date datetime NOT NULL ,
constraint pk_Buy primary key(Goods_ID,US_ID) )

--------建表-OrderDetails---------
create table OrderDetails
(OD_ID VARCHAR(10) ,
US_ID VARCHAR(10) foreign key references Users(US_ID),
Goods_ID VARCHAR(10) foreign key references Goods(Goods_ID),
OD_NUM Int NOT NULL,
constraint pk_OrderDetails primary key clustered(OD_ID,Goods_ID,US_ID) )

--------建表-Orders---------
create table Orders
(O_ID VARCHAR(10),
OD_ID VARCHAR(10),
Dis_ID VARCHAR(10),
O_Status VARCHAR(50) NOT NULL,
O_Date datetime NOT NULL,
primary key(O_ID),
foreign key (OD_ID) references OrderDetails(OD_ID), 
foreign key (Dis_ID) references Distribution(Dis_ID) )

当创建最后一个表时候报错1776

作者: soul_00   发布时间: 2011-06-14

SQL code

--------建表-Orders---------
create table Orders
(O_ID VARCHAR(10),
OD_ID VARCHAR(10),
Dis_ID VARCHAR(10),
O_Status VARCHAR(50) NOT NULL,
O_Date datetime NOT NULL,
constraint pk_O_ID primary key(O_ID),
constraint pk_OD_ID foreign key (OD_ID) references OrderDetails(OD_ID), 
constraint pk_Dis_ID foreign key (Dis_ID) references Distribution(Dis_ID) )

作者: maco_wang   发布时间: 2011-06-14

create table Orders
(O_ID VARCHAR(10),
OD_ID VARCHAR(10),
Dis_ID VARCHAR(10),
O_Status VARCHAR(50) NOT NULL,
O_Date datetime NOT NULL,
constraint pk_O_ID primary key(O_ID),
constraint pk_OD_ID foreign key (OD_ID) references OrderDetails(OD_ID), 
constraint pk_Dis_ID foreign key (Dis_ID) references Distribution(Dis_ID) )

作者: rucypli   发布时间: 2011-06-14

你的Orders表准备设置外键,与Distribution表的Dis_ID列连接,但是,Distribution表的Dis_ID列并不是主键列,你创建的是一个复合主键,它包含了另一列,不能直接与当前表的Dis_ID列连接.
解决办法:
Distribution表只用Dis_ID作主键.它的US_ID看上去并不能作为主键.

作者: qianjin036a   发布时间: 2011-06-14