如何为数据库的所有表设置唯一的主键?
例如,我不想重复不同表的任何主键.
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都是主键和auto_increment.
所有数据都是动态输入的.我在PHPMYADMIN中使用MYSQL.
解决方法:
您可以向模式中添加一个名为ID_Table的新表,该表只有一个名为current_id的数值列,默认值为0,当向模式的任何其他表添加新行时,必须在ID_Table上调用返回ID_Table的select. 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,database,sql,database-design
来源: https://codeday.me/bug/20190612/1229193.html