Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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
Sql 如何在表中的列上添加检查约束?_Sql_Sql Server 2012 - Fatal编程技术网

Sql 如何在表中的列上添加检查约束?

Sql 如何在表中的列上添加检查约束?,sql,sql-server-2012,Sql,Sql Server 2012,我尝试使用第一条语句添加check约束。它给了我下面的错误 [23000][547]ALTER TABLE语句与CHECK约束“CHK_Student_ID_LENGTH”冲突。数据库表“Student”列“ID”中发生冲突 我试图检查是否存在同名的约束。但是我没有得到任何帮助。但我还是试图放弃这个限制。但随后它给出了错误: CHK_Student_ID_长度不是约束条件 但add constraint语句仍给出错误,表示它已经存在。我哪里出错了?错误消息的措辞有点糟糕,但没有说出你认为它在说什

我尝试使用第一条语句添加check约束。它给了我下面的错误

[23000][547]ALTER TABLE语句与CHECK约束“CHK_Student_ID_LENGTH”冲突。数据库表“Student”列“ID”中发生冲突

我试图检查是否存在同名的约束。但是我没有得到任何帮助。但我还是试图放弃这个限制。但随后它给出了错误:

CHK_Student_ID_长度不是约束条件


但add constraint语句仍给出错误,表示它已经存在。我哪里出错了?

错误消息的措辞有点糟糕,但没有说出你认为它在说什么

这并不是说已经存在同名的约束。这意味着约束被违反了。这意味着表中已有数据不符合您试图引入的新约束的要求

您可以使用创建约束,同时允许现有数据违反约束。但这往往是错误的做法。修复现有数据通常更明智


指定
NOCHECK
意味着优化器不能使用约束来消除约束逻辑可能排除的冗余操作。

错误消息的措辞有点糟糕,但没有说出您认为它在说什么

这并不是说已经存在同名的约束。这意味着约束被违反了。这意味着表中已有数据不符合您试图引入的新约束的要求

您可以使用创建约束,同时允许现有数据违反约束。但这往往是错误的做法。修复现有数据通常更明智


指定
NOCHECK
意味着优化器不能使用约束来消除约束逻辑可能排除的冗余操作。

表中可能有一些记录与新约束冲突

在添加约束之前,只需找到它们并进行更新/删除即可

选择*
来自学生
其中LEN([ID])介于12和14之间
或者尝试添加该约束,而不使用NOCHECK检查现有值

使用NOCHECK更改表学生
添加约束CHK_Student_ID_长度检查(LEN([ID]),介于12和14之间);
提示:在迁移文件中,我通常在添加新约束之前添加以下内容:

如果对象ID('CHK\u Student\u ID\u LENGTH')不为空
更改表学生放置约束CHK_学生ID_长度
如果对象ID(“CHK\U学生ID\U长度”)为空
ALTER TABLE学生添加约束。。。

关于
altertable

的更多信息表中可能有一些记录与新约束冲突

在添加约束之前,只需找到它们并进行更新/删除即可

选择*
来自学生
其中LEN([ID])介于12和14之间
或者尝试添加该约束,而不使用NOCHECK检查现有值

使用NOCHECK更改表学生
添加约束CHK_Student_ID_长度检查(LEN([ID]),介于12和14之间);
提示:在迁移文件中,我通常在添加新约束之前添加以下内容:

如果对象ID('CHK\u Student\u ID\u LENGTH')不为空
更改表学生放置约束CHK_学生ID_长度
如果对象ID(“CHK\U学生ID\U长度”)为空
ALTER TABLE学生添加约束。。。

更多关于
ALTER TABLE

的信息,请检查标签摘要,找出哪一个适用于您的问题。它们是两个独立的产品。错误消息来自ms sql server,而不是mysql!请注意你如何标记你的问题,否则会误导他人,造成混乱!请检查和的标签摘要,找出哪一个真正适用于您的问题。它们是两个独立的产品。错误消息来自ms sql server,而不是mysql!请注意你如何标记你的问题,否则会误导他人,造成混乱!
ALTER TABLE Student ADD CONSTRAINT CHK_Student_ID_LENGTH CHECK (LEN([ID]) between 12 and 14);


SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_NAME = 'CHK_Student_ID_LENGTH';


alter table Student drop constraint CHK_Student_ID_LENGTH;