MSSQL - Конкатенация строк по умолчанию [дубликат]

var ColorEnum = {
    red: {},
    green: {},
    blue: {}
}

Вам не нужно быть уверенным, что вы не назначаете повторяющиеся числа для разных значений перечисления таким образом. Новый объект получает экземпляр и присваивается всем значениям перечисления.

3
задан ercan 3 December 2012 в 14:43
поделиться

1 ответ

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

Таблица:

CREATE TABLE test
  (
     id   INT NOT NULL PRIMARY KEY IDENTITY, --made up key
     col1 INT, --first column to add, wasn't sure if this was nullable or not
     col2 INT, --second column to add, wasn't sure if this was nullable or not
     col3 INT NOT NULL --this is the column to optionally insert into
  ) 

определение триггера:

CREATE TRIGGER demo
ON test
INSTEAD OF INSERT
AS
    INSERT INTO test (col1,col2,col3)
    SELECT inserted.col1,
           inserted.col2,
           CASE
             WHEN inserted.col3 IS NULL THEN COALESCE(inserted.col1, 0) + COALESCE(inserted.col2, 0)
             ELSE inserted.col3
           END
    FROM   inserted

В основном он заменяет любую инструкцию insert, выполненную в таблице, с помощью клавиши в триггере, поэтому я проверяю с помощью временной таблицы inserted, чтобы увидеть, быть вставлен в наш необязательный столбец с нулевым значением, col3, является NULL. Если это так, я заменяю его добавлением col1 и col2 (я коалесцирую с нулем, поскольку вы не упомянули, являются ли два столбца источника нулевыми или нет).

Вы затем могут запускать вставные операторы, которые либо включают это, либо нет, несмотря на то, что col3 не является нулевым:

INSERT INTO test(col1,col2)
SELECT 12, 31
GO

INSERT INTO test(col1, col2, col3)
SELECT 1, 2, 89
GO

Результаты:

ID  COL1 COL2 COL3
------------------  
1   12   31    43
2   1    2     89

Если триггер wasn ' t там, вы могли бы получить ошибку, пытающуюся запустить эту первую инструкцию insert, сообщая вам, что она не может вставить NULL в col3.

Обратите внимание, что второй оператор insert, который указывает значение, не имеет было заменено добавлением в соответствии с запросом.

Вот рабочий SQL Fiddle .

4
ответ дан Bridge 31 August 2018 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: