我有以下查询,查询的大纲是这样的,我想删除当前的主键并将主键更改为名为Customer的表中的另一列,如果列中的值,我首先检查很独特。接下来的步骤是
- 检查新主键列是否具有任何空值
- 由于早期的主键也是另一个表中的外键,因此使用了Constraint
- 删除Customer表中的主键列
在Customer表中创建id为
的新主键- 在Rental Table中添加相同的列,因为它具有前面提到的外键约束
- 在Rental表中重新添加外键约束。
select case when count(distinct id)= count(id)
then
(
-- How to check for any nulls in the column id
ALTER TABLE dbo.Rental DROP CONSTRAINT FK_CustNo_Rental
Go
Alter Table dbo.Customer DROP CONSTRAINT PK_Customer
GO
Alter Table dbo.Customer DROP COLUMN [CustNo]
GO
Alter Table dbo.Customer ADD CONSTRAINT [PK_Customer] PRIMARY KEY (id)
GO
Alter Table dbo.Rental ADD COLUMN [id] [nvarchar](9) NOT NULL
GO
Alter Table dbo.Rental ADD CONSTRAINT FK_CustId_Rental FOREIGN KEY([id]) REFERENCES [dbo].[Customer] ([id]),
)
else 'column values are NOT unique' end
from dbo.Customer;
我不确定如何检查表中新主键列的任何空值,并且我在第一个'Alter'时遇到错误。