有没有办法在MySQL数据库中的表之间创建唯一索引?
独一无二,我的意思是,
table A ids=1,2,5,7...
table B ids=3,4,6,8...
答案 0 :(得分:9)
我认为,直接创建约束是不可能的。但是有一些解决方案可以让您获得唯一的ID。
一个建议是使用TRIGGER
。在两个表上创建 BEFORE INSERT 触发器,在INSERT
或UPDATE
期间检查存在的ID。
其次,是通过创建包含UNIQUE
个数字的第三个表和其他表格:TableA
和TableB
将在第三个表格上引用。
答案 1 :(得分:1)
就像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中。