Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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_Sql Server 2005_Tsql - Fatal编程技术网

Sql 更新时的约束冲突

Sql 更新时的约束冲突,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,我有一个带有两个链接列的表,一个强制布尔值和一个可选日期。只有布尔值为FALSE时才能有日期。所以我有这个结构: CREATE TABLE FOO ( FOO_ID INT IDENTITY(1, 1) NOT NULL, MY_DATE DATETIME, MY_BOOLEAN BIT DEFAULT 0 NOT NULL, CONSTRAINT FOO_PK PRIMARY KEY (FOO_ID) ); 我编写了此约束以保持数据完整性: ALTER TA

我有一个带有两个链接列的表,一个强制布尔值和一个可选日期。只有布尔值为FALSE时才能有日期。所以我有这个结构:

CREATE TABLE FOO (
    FOO_ID INT IDENTITY(1, 1) NOT NULL,
    MY_DATE DATETIME,
    MY_BOOLEAN BIT DEFAULT 0 NOT NULL,

    CONSTRAINT FOO_PK PRIMARY KEY (FOO_ID)
);
我编写了此约束以保持数据完整性:

ALTER TABLE FOO
ADD CONSTRAINT FOO_CHK CHECK (
    MY_BOOLEAN=0 OR MY_DATE IS NULL
);
我肯定遗漏了一些明显的信息,但事实是我无法运行此更新查询:

UPDATE FOO
SET 
    MY_BOOLEAN=1,
    MY_DATE=NULL
WHERE FOO_ID=31416
我收到一个检查约束冲突错误,更新失败。我做错了什么


更新


我很遗憾地通知您,我错误地键入了一个列名。。。对不起,浪费了你的时间。我希望我可以删除这个问题:(

我已经用这个脚本测试过了,没有错误。还有其他限制吗

CREATE TABLE FOO (
    FOO_ID INT IDENTITY(1, 1) NOT NULL,
    MY_DATE DATETIME,
    MY_BOOLEAN BIT DEFAULT 0 NOT NULL,

    CONSTRAINT FOO_PK PRIMARY KEY (FOO_ID)
);
ALTER TABLE FOO
ADD CONSTRAINT FOO_CHK CHECK (
    MY_BOOLEAN=0 OR MY_DATE IS NULL
);

set identity_insert foo on
insert into foo(FOO_ID, my_date, MY_BOOLEAN)
select 31416, '20090101', 0
set identity_insert foo off

UPDATE FOO
SET 
    MY_BOOLEAN=1,
    MY_DATE=NULL
WHERE FOO_ID=31416

对不起,假问题(自我回复似乎是关闭它的唯一方式)。

错误应该会告诉你哪个约束失败了,是不是说
FOO_CHK
是原因?Instrucción UPDATE en conflicto con la restricción CHECK“FOO_CHK”。El conflicto ha aparecido en la base de datos“MY_DATABASE”,tabla“dbo.FOO”.1,并验证检查是否有效:
updatefoo SET MY_BOOLEAN=1,MY_DATE=getdate()如果FOO_ID=31416
您是对的,它只适用于这两列……还有一些其他约束,但它们都不影响布尔值和日期,错误消息非常清楚:它归咎于此特定约束:-?请提供包含所有(检查)约束的整个表创建脚本