【问题标题】:SQL - Cannot add check constraint without checking the existing rowsSQL - 在不检查现有行的情况下无法添加检查约束
【发布时间】:2017-03-24 09:23:59
【问题描述】:

我需要修改现有的约束。我阅读了多个主题,这是不可能的,我们需要删除并重新创建它。所以我删除了它并重写了它。尝试将其保存在 SQL Server Management Studio 中时,我收到此错误消息:

无法添加约束 chk_AnneeNaissance。 ALTER TABLE 语句与 CHECK CONSTRAINT chk_AnneeNaissance 冲突。

我知道我的数据库中有一些行不满足此约束,但我想为下一次插入添加它。 我环顾四周,发现我需要自己使用 NOCHECK 执行命令,所以我正在尝试这个命令:

ALTER TABLE [GENERAL].[dbo].[Base] WITH NOCHECK ADD CONSTRAINT chk_AnneeNaissance

但我有这个错误:

消息 102,级别 15,状态 1,行 3 'chk_AnneeNaissance' 附近的语法不正确。

有人可以帮我写正确的命令吗?

【问题讨论】:

  • MySQL 和 sql server 是两个不同的产品。请仅使用相关标签标记您的问题。
  • 请尝试更改您的约束名称 chk_AnneeNaissance 并查看是否有效,如果可以,那么您在某处正确包含 chk_AnneeNaissance
  • 您尝试添加哪个约束?
  • 实际约束的代码在哪里?这是检查约束?你错过了它应该做的检查的实际代码
  • 检查这个可能你会明白的。仔细阅读sqlwithmanoj.com/tag/…

标签: sql sql-server constraints alter-table


【解决方案1】:
ALTER TABLE [ERI_COPY_20170315].[dbo].[Base] WITH NOCHECK
ADD CONSTRAINT chk_AnneeNaissance
CHECK (
[Année de naissance] IS NOT NULL AND 
[Année de naissance]>=([Date de valeur]-(80)) AND 
[Année de naissance]<=([Date de valeur]-(15)) AND
len([Année de naissance])=(4)
)

完美运行。谢谢詹姆斯Z!我不知道应该把约束代码放在哪里。

【讨论】:

    猜你喜欢
    • 2014-05-11
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 2017-07-01
    相关资源
    最近更新 更多