У меня есть существующая таблица с примерно 400 миллионами строк. Эта таблица содержит набор столбцов bit
с именами IsModified, IsDeleted и IsExpired.
CREATE TABLE [dbo].[ActivityAccumulator](
[ActivityAccumulator_SK] [int] IDENTITY(1,1) NOT NULL,
[ActivityAccumulatorPK1] [int] NULL,
[UserPK1] [int] NULL,
[Data] [varchar](510) NULL,
[CoursePK1] [int] NULL,
[TimeStamp] [datetime] NULL,
[SessionID] [int] NULL,
[Status] [varchar](50) NULL,
[EventType] [varchar](40) NULL,
[DWCreated] [datetime] NULL,
[DWModified] [datetime] NULL,
[IsModified] [bit] NULL,
[DWDeleted] [datetime] NULL,
[IsDeleted] [bit] NULL,
[ActivityAccumulatorKey] [bigint] NULL,
[ContentPK1] [bigint] NULL
) ON [PRIMARY]
Я хотел бы добавить ограничение по умолчанию для таблицы, которое для всех будущих вставленных строк по умолчанию будет иметь эти столбцы бит в 0. Я пытаюсь сделать это с помощью следующей команды:
ALTER TABLE ActivityAccumulator
ADD CONSTRAINT DF_ActivityAccumulatorIsExpired DEFAULT (0) FOR IsExpired
ALTER TABLE ActivityAccumulator
ADD CONSTRAINT DF_ActivityAccumulatorIsDeleted DEFAULT (0) FOR IsDeleted
ALTER TABLE ActivityAccumulator
ADD CONSTRAINT DF_ActivityAccumulatorIsModified DEFAULT (0) FOR IsModified
В конце концов я хотел бы вернуться и очистить существующие данные, чтобы поместить нулевое значение везде, где есть значения NULL
, но мне действительно не нужно это делать прямо сейчас.
Просто попытка запустить первую команду ADD CONSTRAINT
выполняется уже более часа. Учитывая, что я не пытаюсь изменить какие-либо существующие значения, почему это так долго?