我想使用SSMS在现有表中创建一个名为PurchaseOrderID
的新列。它结合了LineNumber
和PONUMBER
来创建代理键,然后我将进入表设计模式并在那里为它分配PK。
创建新专栏:
ALTER TABLE FactPurchaseOrders
ADD PurchaseOrderID VARCHAR(64);
填充值:
UPDATE FactPurchaseOrders
SET PurchaseOrderID = (CONVERT(VARCHAR(64), LineNumber) + CONVERT(VARCHAR(64), PONUMBER))
WHERE 1=1;
目前,我无法将此列分配给PK,我相信因为它可以为空。 我也尝试先在设计模式下创建它,并出现同样的问题。
答案 0 :(得分:2)
情况肯定是这样的。运行更新后,只需将PK中使用的列更改为NOT NULL即可。由于列现在具有值,因此可以将其设置为NOT NULL,然后它将允许分配PK。还要确保桌面上还没有其他PK。只能有1个!