Как установить значение по умолчанию для столбца из другой таблицы в SQL Server 2005 - PullRequest
3 голосов
/ 04 сентября 2011

Возможно ли в SQL Server 2005 установить значение по умолчанию для столбца, который поступает из другой таблицы через запрос или что-то в этом роде?

Ответы [ 2 ]

1 голос
/ 04 сентября 2011

Да.

Вы можете использовать скалярный UDF в ограничении по умолчанию.

Это будет RBAR ("Row By Agonizing Row") для многорядных вставок, и триггер вполне может быть более эффективным.

0 голосов
/ 14 ноября 2012

Я согласен с обоими пунктами Мартина.Поэтому я использую триггер, чтобы избежать возможного снижения производительности RBAR в случае массового импорта данных в таблицу.В следующем коде мы хотим, чтобы для MyTable.MyColumn было установлено значение DefaultSource.DefaultMyColumn, если для MyColumn не было указано значение и у нас есть заполненное значение по умолчанию.Предполагается, что существует MyTable.DefaultId (желательно с внешним ключом), поэтому мы можем получить значение по умолчанию из правильной строки в DefaultSource.

CREATE TRIGGER [dbo].[TR_MyTable_AI_Default] 
   ON  [dbo].[MyTable] 
   AFTER INSERT
AS 
SET NOCOUNT ON;

UPDATE m
   SET [MyColumn] = ds.[DefaultMyColumn]
  FROM inserted i
       JOIN [dbo].[MyTable] m ON i.[PrimaryKey] = m.[PrimaryKey]
       JOIN [dbo].[DefaultSource] ds ON i.[DefaultId] = ds.[DefaultId]
 WHERE a.[MyColumn] IS NULL
   AND df.[DefaultMyColumn] IS NOT NULL;

Не пытайтесь обновить вставленную специальную таблицу напрямую,но вместо этого обновите базовую таблицу для триггера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...