我想删除主键,然后将主键添加到1存储过程中的同一列。在一个存储过程中删除和添加约束
我在Begin Transaction' and
提交交易then try to add the constraints within another set of
开始交易and
提交交易``有下降限制。
我收到错误消息,指出该列在第一组事务中被删除时,该主键已存在。
这是代码:
BEGIN TRANSACTION
ALTER TABLE [dbo].[Lens] DROP CONSTRAINT [FK_Lens_Style];
ALTER TABLE [dbo].[Lens] DROP CONSTRAINT [FK_Lens_Type];
ALTER TABLE [dbo].[Coating] DROP CONSTRAINT [PK_Coatings];
ALTER TABLE [dbo].[CoatingCost] DROP CONSTRAINT [PK_CoatingCost];
COMMIT TRANSACTION
BEGIN TRANSACTION
ALTER TABLE [dbo].[Coating]
ADD CONSTRAINT [PK_dbo.Coating]
PRIMARY KEY CLUSTERED ([CoatingId] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
COMMIT TRANSACTION
如果第一组约束被丢弃,并承诺,我不应该能够添加上以前有一个主键列主键?
UPDATE 我想我知道这个问题。这是因为有一个外键与我试图放弃的主键关联。
我将需要删除所有与我试图放下的所有主键相关的外键。然后添加主键。然后再添加外键。
尝试'DISABLE'和'ENABLE',而不是'DROP'和'ADD' – techspider
我不得不辍学该限制因为它需要被重命名或永久删除。 –
这不会像那样工作。要在单个过程中执行此操作,需要将代码移至动态SQL。这是因为编译器会引发异常,因为该表已经有一个主键。它不会通过您的逻辑来确定主键已被删除。我会质疑为什么你首先需要一个存储过程。你真的放弃并重新创建主键,你需要一个过程吗? –