2010-10-03 8 views
0

Может кто-нибудь сказать мне, как я могу обновить столбец записи, когда он вставлен в базу данных. Вот псевдокод, который я хочу.Простой триггер в SQL Server 2008

if(mytable.OriginalId == null) 
    mytable.OriginalId = Scope_Identity(); 
+0

http://msdn.microsoft.com/en-us/library /ms189799.aspx –

+0

Здесь есть проблема: AFAIK вы можете получить только сгенерированную идентификацию по триггеру AFTER UDPATE, поэтому вам придется выполнить другое обновление в таблице, чтобы изменить «OriginalId» ... Это возможно, но я бы не советую. Я бы порекомендовал третий, вычисленный столбец в этом случае, с выражением «COALESCE (OriginalID, ID)». Упрощен, не требуется триггер, и это даст вам ожидаемый результат. – rsenna

ответ

1

Это было бы противоречиво, я думаю. Установлен либо OriginalId, либо он не вставлен.

Если это не где Scope_Identity() получить его значение? Если это из другого столбца, не лучше ли использовать вычисляемый столбец?

К сожалению, это не ясно, что общая цель состоит в том ... вы обычно не использовать триггер, особенно если OriginalId является частью PK

+0

Извините, я должен был упомянуть. PK - это еще один столбец с именем «Id». – mrtaikandi

+0

Спасибо. И должен ли OriginalId всегда совпадать с ID? или разные? – gbn

+0

Если пользователь устанавливает его в null, он должен быть таким же, как ID, иначе он должен быть любым пользователем. – mrtaikandi

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