Vous pouvez utiliser des déclencheurs DDL pour cela, et vous devrez analyser Sql pour vérifier si PK est en cours de création. Je ne pense pas qu'il existe une autre option.
Exemple :
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