【问题标题】:Cannot Alter Table Constraint on Mysql [duplicate]无法更改 Mysql 上的表约束 [重复]
【发布时间】:2015-12-30 16:28:31
【问题描述】:

任何人都知道,我尝试了很多次在我的 mysql sql 中使用更改表约束。

所以我想更改表约束以在性别列中添加验证:

alter table jewerly 
add constraint checkGender CHECK(Gender='Male' OR Gender='female');

对吗?我不知道是什么问题,但它总是在我的 mysql 上返回空结果。为什么?

我从另一个线程读取,它说如果返回空结果是正常的。

但我尝试导出我的 sql,但我发现我的 sql 上没有添加任何约束查询。

有人知道这个问题吗?

======

注意:它标记为重复问题,但最后一个线程只有检查性别约束的解决方案,如果我想添加另一个约束呢?添加后约束总是丢失。

【问题讨论】:

  • 注意:它标记为重复问题,但最后一个线程只有检查性别约束的解决方案,如果我想添加另一个约束怎么办?添加后约束总是丢失。
  • 添加第二个约束的方式与添加第一个约束的方式相同。原始答案(您复制的问题)中给出的技术需要应用于您要添加的每个约束。

标签: php mysql


【解决方案1】:

MySQL 不支持检查约束,这就是为什么即使在 SHOW CREATE TABLE 上也看不到它的原因

【讨论】:

  • 那么,如何为我的 sql 添加约束?我已经手动添加并导入到mysql,我再次使用导出检查,我找不到我手动添加的约束..
  • @rayejoe 使用ENUM 或触发我之前发布的链接
  • 您绝对可以添加约束,但不会运行此检查/验证。您可以尝试插入违反检查约束的行,mysql 不会向您抛出任何错误,它会接受记录。在执行插入之前,您可能必须在代码中进行验证。
  • @iad2025 helo bro 谢谢之前,我读过你关于枚举的帖子,但老实说我不明白如何使用它,我是 mysql 的新手,你能给我举个例子如何使用相关的我的代码?
  • @SKY 我认为是这样,如果我们添加约束,验证将无法运行,但这是我的大学项目,他们要求我们在 sql 中包含约束,但是如果我在我的sql 并导入到 mysql,约束将再次丢失,如果我们导入我们的 sql,我们将找不到它。那么如何在我的 sql 中添加约束?没关系它无法运行验证,但我确实需要为我们的大学项目添加约束。
【解决方案2】:

处理此问题的一种方法是创建一个性别表(id、gender)并在您的珠宝表上使用外键来引用性别表。

将gender_id 列添加到您的珠宝表中,然后在您的珠宝表上创建一个外键。

ALTER TABLE jewelry ADD CONSTRAINT fk_jewelry_gender 
FOREIGN KEY (gender_id) REFERENCES gender (id) ON DELETE NO ACTION ON UPDATE CASCADE

【讨论】:

  • 它很好的解决方案,但是我的项目有一条规则,我们必须在他们获胜时创建表格特征,如果我使用你的答案,我似乎会打破项目规则。 :( .
猜你喜欢
  • 2020-03-18
  • 2015-05-10
  • 2014-02-06
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
  • 2012-05-11
相关资源
最近更新 更多