Możesz użyć do tego wyzwalaczy DDL i musiałbyś przeanalizować Sql, aby sprawdzić, czy PK jest tworzony. Nie sądzę, że istnieje inna opcja.
Przykład:
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