Bạn có thể sử dụng Trình kích hoạt DDL cho việc này và bạn phải phân tích cú pháp Sql để kiểm tra xem PK có đang được tạo hay không. Tôi không nghĩ là có tùy chọn khác.
Ví dụ:
create trigger trgTable
on database
for create_table, alter_table
as
set nocount on
declare @data xml, @obj varchar(255), @type varchar(255), @cmd varchar(max)
set @data = EVENTDATA()
select
@obj = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)'),
@type = @data.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(25)'),
@cmd = @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'varchar(max)')
-- now do your logic here