Drop Foreign Key without knowing the name of the constraint?

后端 未结 7 1175
遇见更好的自我
遇见更好的自我 2020-12-15 03:59

I have created one table using below command:

create table Table1(
    Id int Not Null 
        Foreign key 
        references Table2(Id)  
        on delet         


        
7条回答
  •  被撕碎了的回忆
    2020-12-15 04:32

    Expanding on the answers since I ran into some gotchas. Also, I had 2 foreign keys declared, so I added an optional key to keep, if it's null it'll just be ignored:

    declare @name varchar(255),
         @table varchar(255) = 'mytable',
         @column varchar(255) = 'mykeycolumn',
         @validkey varchar(255) =  'mykeyIwanttokeep'
    
    SELECT @name = CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE TABLE_NAME = @table
        AND COLUMN_NAME =  @column
        AND (CONSTRAINT_NAME != @validkey or @validkey is null)
    
    declare @sql varchar(1023) = 'alter table ' + @table + ' drop ' + @name 
    
    exec (@sql)
    

提交回复
热议问题