Можно ли написать триггер DDL в SQL Server 2008 для автоматического создания ключей на основе имени столбца? - PullRequest
0 голосов
/ 13 февраля 2011

Я никогда не писал триггеров DDL, но я понимаю, что они запускают SQL при изменении схемы. Я ищу, чтобы упростить повторяющиеся задачи. Я не уверен, что они действительно предназначены только для одитинга.

  • Для поля int [id] в первой порядковой позиции:
    • сделать его первичным ключом
    • установить начальное значение / приращение 1
  • Для поля varchar [имя] во второй порядковой позиции:
    • сделать его уникальным ключом

По сути, вопрос заключается в следующем: действительно ли триггеры DDL в SQL Server 2008 соответствуют тому, что я хочу сделать? (И, если вы уже сделали это и у вас есть SQL-код, вставьте его?)

1 Ответ

1 голос
/ 13 февраля 2011

Нет триггеров DDL не подходят для того, что вы хотите сделать.

DDL Триггеры запускаются после таблица уже создана.

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

Даже если предположить, что это только для личного проекта, так что вам не придется беспокоиться о неожиданности со стороны других разработчиков, и вас не волнует аспект неэффективности, генерирующий сценарий create, трудно сделать надежно, пытаетесь ли вы запустить с нуля или проанализируйте CommandText в качестве отправной точки.

Если это обычный шаблон для вас, возможно, вы захотите исследовать создание собственного шаблона CREATE TABLE в проводнике шаблонов SSMS.

...