आप इसके लिए डीडीएल ट्रिगर्स का उपयोग कर सकते हैं, और आपको यह जांचने के लिए एसक्यूएल को पार्स करना होगा कि क्या पीके बनाया जा रहा है। मुझे नहीं लगता कि कोई दूसरा विकल्प है।
उदाहरण:
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