mysql同一表设置两个唯一,mysql – 如何为同一数据库中的所有表设置唯一主键...

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

例如,我不想重复不同表的任何主键.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值