我怎么能拥有一个mysql主键,即使它被删除后也不会重复
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了我怎么能拥有一个mysql主键,即使它被删除后也不会重复,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含914字,纯文字阅读大概需要2分钟。
内容图文
![我怎么能拥有一个mysql主键,即使它被删除后也不会重复](/upload/InfoBanner/zyjiaocheng/902/33e9ede34ccd44bfaa2967d7608eb26c.jpg)
我继承了一个设计很差的mysql数据库,其中在用户表和首选项表之间没有真正的外键.
考虑
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL COMMENT 'email address',
...
)
和
CREATE TABLE `preference` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) NOT NULL,
...
)
如果我从用户表中删除一行,则会使首选项表孤立.但是,使用mysql中的上述主键,只要我向用户表添加一个新行,它实际上将使用先前删除的行中的旧ID – 从而链接到旧用户的首选项(非常不受欢迎).
尽管实现很差(是的,我知道正确的做法是重构代码并使用真正的外键关系更新数据库),有没有办法保证主键永远不会被重用?
解决方法:
您可以创建一个约束,以便在删除具有相关主键的que记录后将外键的值设置为null.它可以通过以下方式实现:
ALTER TABLE `fk_table`
ADD CONSTRAINT `fk_constraint_name`
FOREIGN KEY(`fk_field`)
REFERENCES `pk-table` (`pk`) ON DELETE SET NULL ON UPDATE SET NULL
正如您的问题的评论中所述,MySQL不会重用auto_increment中的值.
内容总结
以上是互联网集市为您收集整理的我怎么能拥有一个mysql主键,即使它被删除后也不会重复全部内容,希望文章能够帮你解决我怎么能拥有一个mysql主键,即使它被删除后也不会重复所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。