如何为同一数据库中的所有表设置唯一主键

Har*_*eja 4 mysql sql database database-design

如何为数据库的所有表设置唯一的主键?
例如,我不想重复不同表的任何主键.

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
Run Code Online (Sandbox Code Playgroud)

一切id都是primary keyauto_increment.所有数据输入dynamically.I现在用MYSQLPHPMYADMIN.

Moh*_*ari 5

您可以向所调用的模式添加一个新表,该表ID_Table只有一个数字列current_id,默认值为0,当向模式的任何其他表添加新行时,您必须调用ID_Table上的select ID_Table.current_id + 1作为新id值返回.然后必须更新ID_Table

Update ID_Tableset ID_Table.current_id = ID_Table.current_id + 1 
Run Code Online (Sandbox Code Playgroud)

GetNewId函数可以通过锁定ID_Table
Updating 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;
Run Code Online (Sandbox Code Playgroud)