SQL基础题出了点问题,跪求

USE MyLibrary
GO
CREATE TABLE Cards
(CardNo varchar(30) PRIMARY KEY,
Name varchar(50),
Workorg varchar(100),
IdCard varchar(50),
CreateDate datetime,
FOREIGN KEY TypeId REFERENCES CardType(Id),
Status varchar(20) CHECK(Status IN('有效','挂失','注销'))

表CardType我已经创建好了,但是我在分析器里边将以上代码复制里边运行一直不行,跪求高手,求解。。。谢谢了。嘎嘎。

作者: hualishiri   发布时间: 2011-06-12

报什么错,嘎嘎。

作者: zy112429   发布时间: 2011-06-12

这个错,嘎嘎,


服务器: 消息 170,级别 15,状态 1,行 8
第 8 行: 'TypeId' 附近有语法错误。

作者: hualishiri   发布时间: 2011-06-12

表CardType已经创建好了。。。。

作者: hualishiri   发布时间: 2011-06-12

SQL code

CREATE TABLE Cards
(
    CardNo      VARCHAR(30) PRIMARY KEY,
    Name        VARCHAR(50),
    Workorg     VARCHAR(100),
    IdCard      VARCHAR(50),
    CreateDate  DATETIME,
    TypeId      INT FOREIGN KEY REFERENCES CardType(Id),
    Status      VARCHAR(20) CHECK(Status IN('有效','挂失','注销'))
)

作者: xiaoliaoyun   发布时间: 2011-06-12

引用楼主 hualishiri 的回复:
USE MyLibrary
GO
CREATE TABLE Cards
(CardNo varchar(30) PRIMARY KEY,
Name varchar(50),
Workorg varchar(100),
IdCard varchar(50),
CreateDate datetime,
FOREIGN KEY TypeId REFERENCES CardType……


由于数据库先执行创建表语句,所以创建表当然没问题。

至于为啥会报错,原因很简单。你的TypedId不是Cards表的字段,而是另外一个表的字段。

要建立外键的引用关系,必须在另外一个表里使用
FOREIGN KEY TypeId REFERENCES CardType(Id),

楼主,你搞清楚了表间的关系没?

作者: patrickjiang   发布时间: 2011-06-12

SQL code
CREATE TABLE Cards
(CardNo varchar(30) PRIMARY KEY,
Name varchar(50),
Workorg varchar(100),
IdCard varchar(50),
CreateDate datetime,
TypeId int FOREIGN KEY  REFERENCES CardType(Id),
Status varchar(20) CHECK(Status IN('有效','挂失','注销'))
)

作者: yyoinge   发布时间: 2011-06-12

简单地说,就是你的TypeId对Cards表来说,是个未定义的字段,所以当然会报错了

作者: patrickjiang   发布时间: 2011-06-12

报什么错误

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