更改SQL表中的主键

时间:2016-09-30 08:11:54

标签: sql

我正在创建一个设备管理系统,其中所有设备(如手机,PDA,计算机等)都链接到“所有者”。

设置tbldevice我发现我没有从所有设备获得IMEI号码,有些只是显示序列号,有些甚至没有这些。

当我在表中插入已经使用的设备时,我没有包装,通常可以找到序列号。

但我想使用EITHER序列号或IMEI作为PK来避免重复。现在我有两个用于s / n和IMEI的字段。由于上述原因,我无法合并PK。

知道如何设置合适的PK吗?

2 个答案:

答案 0 :(得分:0)

可能添加填充

的列
nvl(SN,'##SN##') || nvl(IMEI,'#IMEI#') 

和更新/插入表时填充它的一些逻辑。如果它们是数字,则可以用一些未使用的数字替换丢失的数字,例如

nvl(SN,9999999999) || nvl(IMEI,9999999999) 

在列上创建主键。

答案 1 :(得分:0)

如果您还没有IMEI或序列号无法识别手机/ pda,那么您需要IMEI和/或序列号,并且两者都必须是唯一的。

并且可以将IMEI和序列号组合成一个主键,但有一个技巧:如果没有IMEI填入一个不与现有IMEI值冲突的唯一值,例如唯一号码,或连接随机和时间戳;和序列号的相同行为。

然后IMEI和序列号不具有重复的空值,您可以执行组合的主键。