Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
1215 SQL无法添加外键约束错误_Sql_Sql Server - Fatal编程技术网

1215 SQL无法添加外键约束错误

1215 SQL无法添加外键约束错误,sql,sql-server,Sql,Sql Server,这是我的密码。我不明白为什么不能添加约束 Create table customer( UserId Integer ) CREATE TABLE Date( DateID INTEGER, User1ID INTEGER NOT NULL, User2ID INTEGER NOT NULL, Date CHAR(20) NOT NULL, GeoLocation CHAR(20) NOT NULL,

这是我的密码。我不明白为什么不能添加约束

Create table customer(
    UserId Integer
)

CREATE TABLE Date(
    DateID      INTEGER,
    User1ID     INTEGER NOT NULL,
    User2ID     INTEGER NOT NULL,
    Date        CHAR(20) NOT NULL,
    GeoLocation CHAR(20) NOT NULL,
    BookingFee  INTEGER NOT NULL,
    CustomerRepresentative  CHAR(20) NOT NULL,
    Comments    CHAR(200),
    User1Ratings    CHAR(20),
    User2Ratings    CHAR(20),
    Primary Key (DateID),
    Check ( User1Ratings IN (‘Excellent’, ‘VeryGood’, ‘Good’, ‘Fair’, ‘Poor’) ),
    Check ( User2Ratings IN (‘Excellent’, ‘VeryGood’, ‘Good’, ‘Fair’, ‘Poor’) ),
    FOREIGN KEY (User1ID) REFERENCES customer(UserID)
)

对该行为最可能的解释是,UserID列未定义为customer表中的主键或唯一键

解决这个问题的一个方法是重新写入客户表的create

对于SQL Server:

CREATE TABLE customer
( UserId Integer NOT NULL
, CONSTRAINT PK_customer PRIMARY KEY CLUSTERED (UserId)
);
对于MySQL:

CREATE TABLE customer
( UserId INTEGER NOT NULL PRIMARY KEY 
);

OMG谢谢你,我忘记了主题:代替USER1Access和USER 2的检查约束,考虑创建一个单独的查找表评级,其中包含五个字符串值作为主键;然后将User1Ratings和User2Ratings外键添加到Ratings表中。更容易发现两列的有效值范围,无需查看检查约束的定义;只需查看评级表的内容。2.更灵活:添加新的评级很容易。只需插入评级,无需重新定义多个检查约束。使用ON UPDATE CASCADE,重命名评级变得简单:只需更新评级表,所有日期中的引用都会自动调整。此问题上的sql server标记指定Microsoft sql server。但是错误1215无法添加外键约束是MySQL错误。MySQL的Stackoverflow标签是MySQL。与之前stakx关于检查约束的评论相关:MySQL接受检查约束的语法,但不强制检查约束。stakx所描述的外键约束将使用支持外键(例如InnoDB,但不支持MyISAM)的存储引擎来强制表。MySQL提供的另一个与MyISAM和InnoDB一起使用的选项是ENUM数据类型。例如,User1Ratings列可以定义为数据类型ENUM'Excellent'、'VeryGood'、'Good'、'Fair'、'Poor'。