繁体   English   中英

如何更改“ id”字段的初始值?

[英]How can I change the initial value of `id` field?

我有一个User模型,它生成了下面的表格:

其中id是从1增加。

我已经在一个咒语中使用了我的系统,现在我想更改某个用户实例的id并从10000开始。

在数据库中我无法更改,它将报告错误:

Cannot delete or update a parent row: a foreign key constraint fails (`qy`.`usermanage_user_groups`, CONSTRAINT `usermana_user_id_53f44f10_fk_qy_adm` FOREIGN KEY (`user_id`) REFERENCES `usermanage_user` (`id`))

是否可以更改id 如果有相关因素,我该如何一一解决,例如usermanage_user_groups

id字段是Django添加的自动主键字段,因为您没有提供primary_key=True属性。

注意

现在,正如评论所说,您可能不必更改该字段的行为,因为它可以保证整个数据的唯一性。 有关更多信息,请参见链接的文档。

考虑到您已经了解到,在我看来,您有两种可能。

我认为首选的解决方案

1)添加一个自定义的AutoField并从10000开始,然后将进行相应的更新。

哈克版

2)在您的数据库中添加一个id为9999的用户。 这将导致根据此新值自动增加您的id字段。 它不会填充介于两者之间的值。

您可以在数据库中从10000开始设置序列。 也可以尝试通过数据库管理器手动添加ID为9999的用户。

我有点理解要实现的目标,但是不确定是否要在表中保留现有的用户数据,包括user,usermanage_user,usermanage_user_groups;

意思是, 您是否只是要将现有用户的user_id从[1,2,3,4,... 25]替换为[10000,10001,10002,10004,... 10025]?

1]如果是,那么操纵数据库中的表以安全更新所有引用表中的ID是一种方法。 如果您共享架构结构/ django模型,那么我可以在此处提供更好的解决方案。

2]如果否,则只需将AUTO_INCREMENT设置为10000,以便以下新添加的用户以10000+开始

 `ALTER TABLE User AUTO_INCREMENT = 10000;`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM