2016-04-04 6 views
0

У меня есть таблица, где в модели мне пришлось переименовать один из столбцов. У меня будут программы, использующие «первую» модель и другую, используя новую «вторую» модель. (Переход между моделями будет постепенным). Поэтому я решил сохранить обе колонки:Синхронизация двух столбцов в одной таблице

Document 
    creator 
    coCreator // old column 
    creator2 // new column 
    creator3 // another new column 

Я хочу, чтобы coCreator и creator2 синхронизирована, то есть всегда с тем же значением. Я путаюсь с синтаксисом триггера о том, как этого добиться.

Я использую MS SQL Server.

Оба столбца являются внешними ключами. Будут ли у него какие-то непредвиденные проблемы?

Заранее спасибо.

+0

это tsql или мой sql? –

+0

TSQL. Исправлена ​​запись. –

+0

Что вас смущает? Пожалуйста, отправьте свою попытку на триггер, чтобы мы могли его отладить. –

ответ

0

Если вы действительно этого хотите, я думаю, что лучше не использовать триггер. Я думаю, вы можете использовать столбцы Computed здесь. См. Дополнительную информацию: https://msdn.microsoft.com/en-us/library/ms188300.aspx

a ВЫЧИСЛЕННАЯ колонка не может быть частью внешнего ключа, но это совсем не обязательно, потому что creator2 может.

Пример ::

create table test (
ID int IDENTITY(1,1) PRIMARY KEY, 
creator2 varchar(255) NULL, 
coCreator AS (creator2) PERSISTED NULL 
); 

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

+1

Что происходит, когда приложение вставляется в колонку coCreator? – Hogan

+0

Невозможно ... Так что это может быть проблемой – Jeffrey

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