我有三张桌子:
`brands` (`id`, `name`)
`categories` (`id`, `name`)
`products` (`id`, `name`, `brand_id`, `category_id`)
有更多列,但这些是唯一与此问题相关的列。
我希望所有三个表共享相同的auto_increment
id
(即使id
唯一交叉三个表)。后者可以通过使用引用适当表的公共表来轻松解决:
`entries` (`id`, `name`, `type_id`)
问题在于,在原始场景中,所有表都有外部约束:
有哪些替代方案?
答案 0 :(得分:1)
在MySQL中你能做到这一点的唯一方法就是创建一个带有单个AUTO_INCREMENT
列的表,插入到这个表中,获取最后插入的ID(你究竟是如何做到这一点取决于哪个MySQL客户端库您正在使用),然后在将行插入其他表中时使用此ID。
(遗憾的是PostgreSQL并不比MySQL更受欢迎,因为它支持开箱即用的这个功能:你只需要在表之间共享一个序列对象。)
答案 1 :(得分:0)
看起来您需要跨项目的唯一标识符,但密集度或单调性似乎不是要求... UUID()是否足够?