mysql - SQL 约束使 2 列彼此不相等

标签 mysql sql constraints multiple-columns

我有一个表,其中有两列用于存储另一个表中的 id。 Column1 从 ABC 表获取 id,Column2 也从该表获取 id,但字母称为父 ID,因此通过这些信息我知道谁是谁的父代。

现在我想创建一个约束,永远不要让两列获得相同的 id。 以下无效:

ALTER TABLE id_parent_table
ADD CHECK (parent_id != main_id)

这仍然允许插入两个相同的数字。

最佳答案

从 MySQL 8.0.16 开始支持此功能。

参见https://dev.mysql.com/doc/refman/8.0/en/create-table-check-constraints.html

mysql> create table id_parent_table (
    -> main_id bigint unsigned not null,
    -> parent_id bigint unsigned not null,
    -> constraint columns_cannot_equal check (main_id <> parent_id)
    -> );
Query OK, 0 rows affected (0.38 sec)

mysql> insert into id_parent_table (main_id, parent_id) values (1, 1);
ERROR 3819 (HY000): Check constraint 'columns_cannot_equal' is violated.

关于mysql - SQL 约束使 2 列彼此不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23130642/

相关文章:

database - oracle - 违反完整性约束 - 找到子记录

php - 在 php 中循环遍历多维数组并执行 mysql 插入(股票数据)

mysql - 在 Amazon EC2 实例上安装 phpMyAdmin

Mysql触发器返回1442错误

sql - 如何根据公历计算Oracle SQL中一个期间的第一个日期和最后一个日期

mysql - 用于练习的示例数据集 - Oracle pl/sql

rotation - Xcode 6 自动布局仅限纵向

mysql - 从 MySQL 数据 VB.NET 填充 datagridview 中的特定列

sql - "variable = ."(变量 = 点)在 Oracle SQL/SAS 中意味着什么?

r - 使用 R nloptr 包进行最小化 - 多重等式约束