Вместо этого вставьте триггер - PullRequest
1 голос
/ 30 мая 2009

Может кто-нибудь дать мне каркас тела вместо вставного триггера для MSSQL. Я пытаюсь проверить наибольшее значение в столбце заказа на поставку (которое является целым числом), и при вставке он получает наибольшее приращение значения, равное единице, и вставляет его в качестве идентификатора заказа на покупку. Столбец не был настроен с параметром Автоинкремент, поэтому я обхожу это с помощью триггера.

Спасибо.

Ответы [ 2 ]

6 голосов
/ 30 мая 2009

Вот как изменить таблицу, чтобы включить столбец идентификаторов.

  1. Создайте новую таблицу с той же структурой, но со столбцом идентификаторов в идентификаторе заказа на поставку. Вы можете использовать «скрипт таблицы как» и просто изменить строку для идентификатора заказа на покупку, например:

    [Идентификатор заказа на поставку] int первичный ключ идентификации,

  2. Включить идентификационную вставку на новом столе:

    SET IDENTITY INSERT NewTable ON

  3. Скопировать данные:

    INSERT INTO NewTable (столбцы) SELECT * FROM CurrentTable

  4. Выключить идентификационную вставку:

    SET IDENTITY INSERT NewTable OFF

  5. Переименуйте (или удалите) старую таблицу, чтобы она больше не использовалась:

    EXEC sp_rename 'CurrentTable', 'BackupTable';

  6. Переместить новую таблицу в:

    EXEC sp_rename 'NewTable', 'CurrentTable';

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

0 голосов
/ 30 мая 2009

Как описано в Andomar, создание новой таблицы для надлежащей поддержки ваших конкретных требований, на мой взгляд, было бы идеальным вариантом.

Тем не менее, если вы захотите пойти по маршруту вместо триггера вставки, то следующий справочник Microsoft предоставляет подробный пример.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...