Search code examples
sql-servert-sqlforeign-keyssql-server-2014

TSQL Drop FK in another database


MSSQL 2014

Is it possible to drop a FK in database2 whilst working in database1?

This isn't working for me

use database1
go

    IF EXISTS (SELECT 1 FROM database2.sys.foreign_keys WHERE object_id = OBJECT_ID(N'fk_in_tbl_in_other_db') AND parent_object_id = OBJECT_ID(N'database2.dbo.tableName'))
    BEGIN
        ALTER TABLE database2.dbo.tableName DROP CONSTRAINT fk_in_tbl_in_other_db;
    END

Solution

  • Ok, I've managed to find a solution, Just a small modification to the WHERE clause

    replace

    WHERE object_id = OBJECT_ID(N'fk_in_tbl_in_other_db')
    

    with

    WHERE name = N'fk_in_tbl_in_other_db'
    
    
    IF EXISTS (SELECT 1 FROM database2.sys.foreign_keys WHERE name = N'fk_in_tbl_in_other_db' AND parent_object_id = OBJECT_ID(N'database2.dbo.tableName'))
    BEGIN
        ALTER TABLE database2.dbo.tableName DROP CONSTRAINT fk_in_tbl_in_other_db;
    END