[SQL] SQL 서버 : 드롭 테이블 캐스케이드 동등한?
SQLSQL 서버 : 드롭 테이블 캐스케이드 동등한?
오라클, 모든 테이블과 제약 당신이 뭔가를 같이 입력을 떨어 뜨리는
DROP TABLE myTable CASCADE CONSTRAINTS PURGE;
이것은 완전히 테이블과 종속성을 삭제합니다. SQL 서버와 동등한은 무엇입니까?
해결법
-
==============================
1.나는 SQL은 유사 우아한 해결책을 가지고 있다고 생각하지 않습니다. 당신은 당신이 테이블을 삭제하기 전에 먼저 모든 관련 제약 조건을 삭제해야합니다.
나는 SQL은 유사 우아한 해결책을 가지고 있다고 생각하지 않습니다. 당신은 당신이 테이블을 삭제하기 전에 먼저 모든 관련 제약 조건을 삭제해야합니다.
다행히,이 모든 정보 스키마에 저장되며 당신은 당신의 구타 목록을 가져가 액세스 할 수 있습니다.
이 블로그 포스트는 당신이 필요로 무엇을 얻을 수 있어야합니다 : http://weblogs.asp.net/jgalloway/archive/2006/04/12/442616.aspx
-- t-sql scriptlet to drop all constraints on a table DECLARE @database nvarchar(50) DECLARE @table nvarchar(50) set @database = 'DatabaseName' set @table = 'TableName' 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
-
==============================
2.SQL Server 관리 Studio에서 옵션 / SQL 서버 개체 탐색기 / 스크립팅로 이동 가능 '종속 개체에 대한 스크립트를 생성'. 그런 다음 바로 새 쿼리 창>에 테이블, 스크립트> 드롭을 클릭하고 당신을 위해 그것을 생성합니다.
SQL Server 관리 Studio에서 옵션 / SQL 서버 개체 탐색기 / 스크립팅로 이동 가능 '종속 개체에 대한 스크립트를 생성'. 그런 다음 바로 새 쿼리 창>에 테이블, 스크립트> 드롭을 클릭하고 당신을 위해 그것을 생성합니다.
-
==============================
3.이 끔찍한의 솔루션이 될 수 있습니다,하지만 난 그게 빠르다 찾을 수 있습니다. 이 비니의 대답은 비슷하지만 SQL 문의 제품은 모든 제약과 테이블을 삭제 SQL 문의 또 다른 시리즈입니다.
이 끔찍한의 솔루션이 될 수 있습니다,하지만 난 그게 빠르다 찾을 수 있습니다. 이 비니의 대답은 비슷하지만 SQL 문의 제품은 모든 제약과 테이블을 삭제 SQL 문의 또 다른 시리즈입니다.
( select 'ALTER TABLE ' + tc.table_name + ' DROP CONSTRAINT ' + tc.constraint_name + ';' from INFORMATION_SCHEMA.TABLES t ,INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc where t.table_name = tc.table_name and tc.constraint_name not like '%_pk' and tc.constraint_name not like 'pk_%' and t.table_catalog='<schema>' ) UNION ( select 'DROP TABLE ' + t.table_name + ';' from INFORMATION_SCHEMA.TABLES t where t.table_catalog='<schema>' )
-
==============================
4.일부 표는 테이블을 참조 할 때까지 모든 재미와 게임입니다 ...
일부 표는 테이블을 참조 할 때까지 모든 재미와 게임입니다 ...
그럼 난과 같이 제공되는 코드를 변경해야합니다 :
CREATE PROCEDURE _cascadeConstraints @database nvarchar(30) = NULL, @table nvarchar(60) = NULL as 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 select @sql = 'ALTER TABLE ' + tc.TABLE_NAME + ' DROP CONSTRAINT ' + tc.CONSTRAINT_NAME from INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc join INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc on (rc.CONSTRAINT_CATALOG = tc.CONSTRAINT_CATALOG and rc.CONSTRAINT_NAME = tc.CONSTRAINT_NAME) join INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc_pk on (tc_pk.CONSTRAINT_CATALOG = rc.CONSTRAINT_CATALOG and tc_pk.CONSTRAINT_NAME = rc.UNIQUE_CONSTRAINT_NAME) where tc.constraint_catalog = @database and tc_pk.TABLE_NAME = @table exec sp_executesql @sql END go
-
==============================
5.궁극적으로 우리는 우리의 테이블을 삭제합니다. 우리는 단순히 다음 명령 2를 실행 할 수 있습니다 :
궁극적으로 우리는 우리의 테이블을 삭제합니다. 우리는 단순히 다음 명령 2를 실행 할 수 있습니다 :
ALTER TABLE ... DROP CONSTRAINT ...
DROP TABLE ...
1> ALTER TABLE PRJ_DETAILS DROP CONSTRAINT FK_PRJ_TYPE;
- 테이블 이름 및 제약 조건 이름 매개 변수입니다
2> DROP TABLE.
그 테이블과 연관된 이름을 가진 첫 번째 드롭 제약 두 번째는 테이블을 삭제할 수 있습니다.
그것은 나하고 쉽게도 일했다.
-
==============================
6.난 그냥 외래 키를 삭제 필요
난 그냥 외래 키를 삭제 필요
DECLARE @database nvarchar(50) DECLARE @TABLE_NAME nvarchar(250) DECLARE @CONSTRAINT_NAME nvarchar(250) DECLARE @sql nvarchar(350) set @database = 'XXX' DECLARE db_cursor CURSOR FOR select TABLE_NAME, CONSTRAINT_NAME from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where constraint_catalog = @database and CONSTRAINT_TYPE='FOREIGN KEY' OPEN db_cursor FETCH NEXT FROM db_cursor INTO @TABLE_NAME, @CONSTRAINT_NAME WHILE @@FETCH_STATUS = 0 BEGIN select @sql = 'ALTER TABLE ' + @TABLE_NAME + ' DROP CONSTRAINT ' + @CONSTRAINT_NAME from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where constraint_catalog = @database and table_name = @TABLE_NAME exec sp_executesql @sql FETCH NEXT FROM db_cursor INTO @TABLE_NAME, @CONSTRAINT_NAME END CLOSE db_cursor DEALLOCATE db_cursor
from https://stackoverflow.com/questions/4858488/sql-server-drop-table-cascade-equivalent by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] JDBC에서 누락 dll을 (0) | 2020.05.03 |
---|---|
[SQL] 왼쪽은 내부에 회전이 조인 (0) | 2020.05.03 |
[SQL] SQL - 조건이 문제가 WHERE의 순서를합니까? (0) | 2020.05.03 |
[SQL] 별도 쉼표 SQL 서버 테이블 값 저장소를 분리 (0) | 2020.05.03 |
[SQL] 외래 키 등을 사용하여 복합 기본 키 (0) | 2020.05.03 |