如何给数据库的所有表设置一个唯一的主键?
例如,我不想重复不同表的任何主键。
table A:
----------
id | name
----------
1 | aaa
3 | bbb
5 | ccc
table B:
-------------
id | surname
-------------
7 | ddd
2 | eee
9 | fff
table C:
-------------
id | nickname
-------------
4 | ggg
6 | hhh
8 | iii
所有id
都是primary key
和auto_increment
。
所有数据都是动态输入的。我在 PHPMYADMIN
中使用 MYSQL
。
最佳答案
您可以向您的架构添加一个名为 ID_Table
的新表,当向任何添加新行时,该表将只有一个名为 current_id
的数字列,默认值为 0您必须调用 ID_Table 上的选择的模式的其他表返回 ID_Table.current_id + 1
作为新的 id 值。
然后必须更新 ID_Table
Update ID_Tableset ID_Table.current_id = ID_Table.current_id + 1
GetNewId
函数可以通过以下方式实现
锁定 ID_Table
更新 ID_Table
返回 NewID
是这样的(我用过Oracle语法)
create table ID_Table(
current_id number
);
Insert into ID_Table values(0);
CREATE OR REPLACE Function GetNewId RETURN number is
new_id ID_Table.current_id%type;
row_count number;
begin
select nvl(ID_Table.current_id, 0) + 1
INTO new_id
FROM ID_Table
for update;
update ID_Table set ID_Table.Current_Id = new_id;
commit;
RETURN new_id;
end GetNewId;
关于mysql - 如何为同一数据库中的所有表设置唯一的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16494624/