[英]Is it possible to create a Unique (Index) constraint across multiple tables?
有没有办法在MySQL数据库中的表之间创建唯一索引?
我的意思是独一无二的
table A ids=1,2,5,7...
table B ids=3,4,6,8...
我认为 ,通过直接创建约束是不可能的。 但是有一些解决方案可以让您获得唯一的ID。
一个建议是使用TRIGGER
。 在两个表上创建BEFORE INSERT触发器,在INSERT
或UPDATE
期间检查ID是否存在。
其次,通过创建包含UNIQUE
数字和其他表的第三个表: TableA
和TableB
将在第三个表上引用。
就像JW所说的那样,使用第三张表可能会很好。 在MySQL中,您可以使用标识字段来简化这一过程。 一个非常简单的例子就是使用这些表(只有名称的简单版本的表,而不知道任何进一步的信息):
CREATE TABLE a
(
`id` int,
`name` varchar(100),
PRIMARY KEY(`id`)
)
ENGINE = INNODB;
CREATE TABLE b
(
`id` int,
`name` varchar(100),
PRIMARY KEY(`id`)
)
ENGINE = INNODB;
CREATE TABLE c
(
`id` int auto_increment,
`intable` varchar(10) not null,
PRIMARY KEY(`id`)
)
ENGINE = INNODB;
然后,当你想在任一个表上插入一个值时,do(将'Joe'插入a中的示例):
INSERT INTO c (`intable`) VALUES ('a');
INSERT INTO a (`id`, `name`)
SELECT LAST_INSERT_ID() AS id, 'Joe' AS name;
在c中输入intable的唯一原因是你知道它是为哪个表创建的。 可以使用任何类型的值插入到c中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.