У меня есть две существующие таблицы (TableA и TableB), и мне нужно добавить новый столбец в таблицуA, который имеет внешний ключ для TableB и имеет значение по умолчанию, которое не является нулевым... и оба эти ограничения должны быть названы, Как я могу это сделать?
Как изменить столбец добавления столбца с именованным ограничением по умолчанию и с именем ограничения внешнего ключа?
Ответ 1
Добавление обоих ограничений в одно утверждение было не таким легким, как я думал, что это будет так, и там не было много примеров (по крайней мере, я не смог найти очень легко), поэтому я подумал Я бы поделился тем, как я сделал это здесь, и, возможно, кто-то может предложить лучший способ?
ALTER TABLE [table name] ADD
[New Column Name] [Column Type]
CONSTRAINT [constraint name] DEFAULT ([default value]) NOT NULL,
CONSTRAINT [constraint name] FOREIGN KEY ([New Column Name])
REFERENCES [Other Table] ([Foreign ID])
Пример:
ALTER TABLE tableA ADD
myNewColumn BIGINT
CONSTRAINT myNamedConstraint_df default (1) NOT NULL,
CONSTRAINT myNamedConstraint_fk FOREIGN KEY (myNewColumn)
REFERENCES tableB (tableBPrimaryKeyID)
Ответ 2
Я сделал это в двух частях, в SQL Server Management Studio.
ALTER TABLE MyTable
ADD MyId uniqueidentifier DEFAULT (NEWID())
Затем я вручную изменил GUID на то, что они должны действительно быть в новом столбце. Затем я добавил ограничение внешнего ключа.
ALTER TABLE MyTable
ADD FOREIGN KEY (MyId )
REFERENCES OtherTable(Id)