相关疑难解决方法(0)

压缩或重新编号所有表的ID,并将序列重置为max(id)?

运行了很长时间后,我在id字段中得到越来越多的漏洞.一些表的id是int32,id序列达到了它的最大值.一些Java源代码是只读的,因此我不能简单地将id列类型更改为int32to long,这会破坏API.

我想重新编号.这可能不是一个好的做法,但好或坏并不关心这个问题.我想重新编号,特别是那些很长的ID,如"61789238","548273826529524324".我不知道它们为什么这么长,但更短的ID也更容易手动处理.

但由于引用和约束,手动压缩ID并不容易.

PostgreSQL本身是否支持ID重新编号?或者是否有任何插件或维护工具?

也许我可以写一些存储过程?那将是非常好的,所以我可以每年安排一次.

postgresql identity auto-increment compact-database

10
推荐指数
2
解决办法
4178
查看次数

有一张桌子的一对多

我试图使用一个表创建一对多的关系.这可能吗?

create table user(id int primary key auto_increment not null,                                                                                                                      
created_by int default null                                                                                                                                                        
)ENGINE=INNODB;                                                                                                                                                                    

alter table user add foreign key (created_by) references user(id) ON DELETE SET NULL ON UPDATE CASCADE;                                                                            

insert into user (id) VALUES(1);                                                                                                                                                   
insert into user (id, created_by) VALUES (2,1);   
Run Code Online (Sandbox Code Playgroud)

现在,当我删除id = 1的用户时,created_by的值会自动变为NULL.

但是当我更改id = 1的用户的id时,我收到此错误

mysql> update user set id=2 where id=1;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`jrt`.`user`, CONSTRAINT `user_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `user` (`id`) …
Run Code Online (Sandbox Code Playgroud)

mysql

5
推荐指数
1
解决办法
436
查看次数

HOW TO:当表A上的记录被删除时,表B上与表A相关的所有记录都应该被删除?

考虑到以下方案:

表关系

我们需要确保,如果关联被删除,那么属于该关联的所有狗也应该被删除.

但是,在执行此操作时,保持Association和Dog表之间实际存在的关系是有道理的,因为每个关联可以有几个Dogs,但是,一个Dog只属于一个Association.所以我相信外键配置是正确的.

我相信我应该在某处应用Cascade,但我没有看到.:(

请指教

mysql table-relationships mysql-workbench

2
推荐指数
1
解决办法
987
查看次数

postgres 如何重置或更新表的索引(序列)

我删除了表中的 2000 行,然后插入了相同的 2000 条记录,但它们的索引(id 自动增量字段)从 2001 年开始,现在我想将这些索引 2001 - 4000 更新为 1-2000

sql postgresql database-sequence

2
推荐指数
1
解决办法
1791
查看次数