Обновить значение при вставке в таблицу в SQL Server - PullRequest
1 голос
/ 06 февраля 2012

Я работаю с SQL Server - при вставке в таблицу у меня есть уникальное ограничение на столбец таблицы id.Существует вероятность, что при вставке в столбец id будет указано значение 0.Это приведет к ошибке.

Можно ли обновить это id на другое значение во время вставки, если значение id равно 0?Это должно предотвратить ошибку и дать ей допустимое значение.

Возможно, триггер?

Ответы [ 3 ]

1 голос
/ 06 февраля 2012

Триггер является односторонним, но вы можете использовать отфильтрованный индекс (CREATE UNIQUE INDEX, а не как ограничение таблицы), чтобы игнорировать нулевое значение. Таким образом, вам не нужно беспокоиться о том, какое значение поставить туда

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

ALTER TABLE whatever 
    ADD ComputedUniqueCol = CASE WHEN Id = 0 THEN OtherCol ELSE Id END
0 голосов
/ 06 февраля 2012

создайте триггер «вместо» и проверьте значение идентификатора.

CREATE trigger checkID
on YOUR_TABLE
instead of insert
as
begin
    declare @id int
    select @id=id from inserted
    if (@id==0) begin
        --DO YOUR LOGIC HERE AND THEN INSERT
    end else begin
        insert into DESTINATION_TABLE (VALUES)
        SELECT VALUES FROM INSERTED
    end
end
0 голосов
/ 06 февраля 2012

Если это ваш первичный ключ, вы можете указать его как IDENTITY. Затем он должен сгенерировать для себя значение, основанное на семени и приращении (по умолчанию это seed = 1 и default = 1), так что вам не нужно об этом беспокоиться.

CREATE TABLE MyTable
(
    ID int PRIMARY KEY IDENTITY,
    ...
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...