Может кто-нибудь сказать мне, как я могу обновить столбец записи, когда он вставлен в базу данных. Вот псевдокод, который я хочу.Простой триггер в SQL Server 2008
if(mytable.OriginalId == null)
mytable.OriginalId = Scope_Identity();
Может кто-нибудь сказать мне, как я могу обновить столбец записи, когда он вставлен в базу данных. Вот псевдокод, который я хочу.Простой триггер в SQL Server 2008
if(mytable.OriginalId == null)
mytable.OriginalId = Scope_Identity();
Это было бы противоречиво, я думаю. Установлен либо OriginalId, либо он не вставлен.
Если это не где Scope_Identity()
получить его значение? Если это из другого столбца, не лучше ли использовать вычисляемый столбец?
К сожалению, это не ясно, что общая цель состоит в том ... вы обычно не использовать триггер, особенно если OriginalId является частью PK
Извините, я должен был упомянуть. PK - это еще один столбец с именем «Id». – mrtaikandi
Спасибо. И должен ли OriginalId всегда совпадать с ID? или разные? – gbn
Если пользователь устанавливает его в null, он должен быть таким же, как ID, иначе он должен быть любым пользователем. – mrtaikandi
http://msdn.microsoft.com/en-us/library /ms189799.aspx –
Здесь есть проблема: AFAIK вы можете получить только сгенерированную идентификацию по триггеру AFTER UDPATE, поэтому вам придется выполнить другое обновление в таблице, чтобы изменить «OriginalId» ... Это возможно, но я бы не советую. Я бы порекомендовал третий, вычисленный столбец в этом случае, с выражением «COALESCE (OriginalID, ID)». Упрощен, не требуется триггер, и это даст вам ожидаемый результат. – rsenna