2014-01-16 3 views
0

Я знаю, что существует множество тем, связанных с подобными проблемами, но ничто так не привело меня вперёд.SQL - После обновления Триггер нескольких столбцов.

Я хочу обновить таблицу в базе данных 2 тем, что было обновлено в соответствующей таблице в базе данных 1 через триггер. Они имеют одну и ту же структуру таблицы. Использование MS SQL 2008.

Там действительно нет проблем, делают это в ПОСЛЕ ВСТАВКИ триггером так же, как

INSERT INTO DB2..Table1 
SELECT * 
FROM inserted 
WHERE column1 = @column1 

Но при этом после обновления стиля

UPDATE DB2..Table1 
SET column2 = @column2 --etcetera in some way 
FROM DB1..Table1 
WHERE column1 = @column1 --or something not important 

Есть более 100 столбцов а также изменения/дополнения к столбцам таблицы (хотя DB1..Table1 и DB2..Table1 всегда будут иметь одну и ту же структуру и столбцы), поэтому установка значения для каждого столбца, который должен быть обновлен, кажется очень неудачным.

То, что я действительно хочу, чтобы написать это:

UPDATE DB2..Table1 
SET DB2..Table1 = (SELECT * FROM inserted WHERE column1 = @column1) alternatively DB2..Table1 = DB1..Table1 
WHERE column1 = @column1 

Кроме того, я должен установить фиксированные значения для 3 из 100+ колонн. Эти три столбца будут единственной разницей между таблицей DB1 и таблицей DB2. Это также прекрасно, когда новая строка вставлена, но заставляет меня задаться вопросом, как я должен это делать в случае обновления.

Любые идеи?

Аналогичный вопрос: Update multiple columns in SQL, но я действительно надеюсь, что есть лучший способ сделать это, о котором я не думал.

ответ

0

Боюсь, вам не повезло. Onlt способ сделать обновление является

set a.col1 = b.val1, a.col2 = b.val2.... 

Там может быть СУБД или два, которые имеют различные синтаксические варианты, но это стандарт.

+0

Спасибо в любом случае, хотя – heen

Смежные вопросы