Эквивалент для каскадных ограничений удаления таблицы table_name в SQL Server - PullRequest
0 голосов
/ 01 июня 2011

Мой вопрос заключается в том, что в Oracle мы можем использовать drop table table_name cascade constraints для удаления объекта таблицы, на которую есть ссылка.Как я могу добиться того же в SQL Server?

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

Существует возможность позволить Management Studio сгенерировать сценарий, который изменяет / удаляет все ограничения для зависимых объектов.

Я нашел здесь описание Каскадный эквивалент SQL-таблицы для SQL Server

0 голосов
/ 01 июня 2011

Как я знаю, в MsSql нет ни одной команды, но вы можете использовать INFORMATION_SCHEMA и динамический SQL.

Примерно так:

DECLARE @database nvarchar(50)
DECLARE @table nvarchar(50)

set @database = 'MyDatabase'
set @table = 'MyTable'

DECLARE @sql nvarchar(255)
WHILE EXISTS(select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where constraint_catalog = @database and table_name = @table)
BEGIN
    select    @sql = 'ALTER TABLE ' + @table + ' DROP CONSTRAINT ' + CONSTRAINT_NAME 
    from    INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
    where    constraint_catalog = @database and 
            table_name = @table
    exec    sp_executesql @sql
END
...