Что такое элегантный способ сделать автоматическое увеличение двух полей? - PullRequest
1 голос
/ 02 ноября 2009

В SQL Server у меня есть два поля, одно из которых является основным и имеет идентификатор (AN_ID), затем у меня есть другое, которое по устаревшим причинам (не спрашивайте) должно быть обновлено с учетом AN_ID. В настоящее время они имеют одинаковую стоимость. Мне было интересно, если есть чистый запрос T-SQL (без хранимых процедур), чтобы сделать его автоинкрементным.

Большое спасибо

Редактировать: я вынужден к SQL Server 2000

Ответы [ 3 ]

4 голосов
/ 02 ноября 2009

Если оба поля могут содержать одно и то же значение, для этого можно использовать триггер вставки или вычисляемый столбец (новый в SQL 2005).

РЕДАКТИРОВАТЬ: Нечто подобное должно работать.

CREATE TRIGGER MyTable_AI ON MyTable
AFTER INSERT AS
    UPDATE MyTable
    SET OTHER_ID = AN_ID
    WHERE AN_ID IN (SELECT AN_ID FROM inserted);
3 голосов
/ 02 ноября 2009

«Правильным» решением почти наверняка является использование триггера, однако, если он подпадает под заголовок «нет хранимых процедур», то вы можете немного выдумать, выполнив два последовательных запроса (которые вы сможете отправить как один запрос из вашего вызывающего приложения - полезно знать, какую среду вы используете поверх SQL Server).

например. (очень приблизительно)

INSERT INTO tbl (col1, col2, col3) values (@col1param, @col2param, @col3param);
UPDATE tbl SET not_an_id = an_id WHERE an_id = SCOPE_IDENTITY()
2 голосов
/ 02 ноября 2009

Второй столбец может быть вычисляемым столбцом с формулой AN_ID.

Вы также можете создать представление с псевдонимом AN_ID.

...