2013-09-30 4 views
0

У меня есть две таблицы:SQL Express 2008 - таблица 2 column1 равна table1 column1

  • table1 имеет staffid
  • table2 имеет staffid

Я хочу таблица2 staffid равным Table1 staffid

, и когда изменения приводятся к идентификатору персонала 1, им необходимо выполнить ch ange staffid в таблице2

Как это сделать?

ответ

0

Если вы хотите, чтобы это было сделано автоматически, вам необходимо использовать ПО ОБНОВЛЕНИЮ КАСКАДА для стола2.

+2

Или триггер, который срабатывает после каждого обновления на таблице1 –

+0

Да, это тоже должно работать. +1 –

1

CREATE TRIGGER [DBO] [TESTDB] ВКЛ [DBO] [Таблица 1] ПОСЛЕ UPDATE AS

НАЧАТЬ DECLARE @staffID INT ВЫБОР staffID = staffID ОТ INSERTED

-.. У то для обновления в таблице 2 END

Вы можете использовать дО UPDATE или ПОСЛЕ триггер UPDATE для достижения вашей задачей

Вот ссылка http://msdn.microsoft.com/en-us/library/ms189799.aspx

+0

Добро пожаловать в StackOverflow: если вы отправляете код, XML или образцы данных, ** пожалуйста ** выделите эти строки в текстовом редакторе и нажмите кнопку «образцы кода» ('{}') на панели инструментов редактора, чтобы красиво формат и синтаксис выделить его! –

1

Как ваш первый требование является table2 staffid должна быть равной table1 staffid, вы можете определить ограничение внешнего ключа на table2 идентификатор сотрудника, как:

ALTER TABLE table2 WITH NOCHECK 
ADD CONSTRAINT FK_staffid 
FOREIGN KEY(staffid) 
REFERENCES table1(staffid) 
ON UPDATE CASCADE 

ключа внешней опции «С чеком 'указывает, что любые существующие данные в таблице внешнего ключа [т.е. Table2] должны быть проверены, чтобы соответствовать ограничению, тогда как параметр «WITH NOCHECK» указывает, что существующие данные не проверены, чтобы соответствовать новому ограничению. Эта опция может сделать процесс создания более эффективно, когда вы знаете, что все существующие данные в таблице 2 уже соответствуют ограничению, но любые несоответствующие записи будут проигнорированы во время создания. Однако во время последующих обновлений несоответствующей строки ограничение будет принудительно, что приведет к ошибке.

Также второе требование - это изменения, внесенные в таблицу1. Штатные сотрудники должны быть каскадированы для персонала в таблице2. Следует использовать опцию «ON UPDATE CASCADE».

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

  • Нет связанных вопросов^_^