MySql中check添加限定条件的疑问

lyw2073327 2021-04-27 05:32:25
有两个问题向大家请教,先谢谢了

先创建了如下的一个新表格
CREATE TABLE Persons_Form
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
然后有两种情况,第一种是我对表格内容进行了编辑,编辑内容如下图

然后添加条件设定语句
ALTER TABLE Persons_Form ADD CONSTRAINT chk_Id_city CHECK (City != 'sh')
这个时候就会报错

第二种情况是不对表格内容进行编辑的情况下 (即City选项中不填入 'sh') 直接添加上面的那条个件设定语句,这个时候是可以正常添加的

然后这里有一些疑问,根据我自己原来的认知,在后添加条件设定之前大部分表格数据应该都是已经存在了大量的数据了,那如果已有数据中存在和check限定冲突的数据就无法添加新限定的话,那应该如何来添加新的限定条件呢,如果把原有数据再重新整理来满足限定条件的话未免工作量太大了,不知我的理解是否存在偏颇

另外还有一个问题是我发现通过 ALTER TABLE Persons_Form ADD CHECK (City != 'sh') 的方式也可以添加限定条件,但如果移除限定的话用 ALTER TABLE Persons_Form DROP CHECK (City != 'sh') 会报错,而网上查询下来都是 DROP CHECK chk_Person 的方式,那这里的 chk_Person 是对应什么呢
...全文
101 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
morliz子轩 2021-04-27
  • 打赏
  • 举报
回复
问题1: 先把有违反约束条件的值的所有行,进行清空='',再做约束条件,不就行了? 问题2: 开启和关闭约束:

//disable
SET FOREIGN_KEY_CHECKS = 0;


//enable
SET FOREIGN_KEY_CHECKS = 1;

//查看当前FOREIGN_KEY_CHECKS的值可用如下命令
SELECT  @@FOREIGN_KEY_CHECKS;

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧