테이블이 있는 경우 테이블을 드롭하려면 어떻게 해야 합니까?
테이블명은Scores
.
다음과 같이 하는 것이 맞습니까?
IF EXISTS(SELECT *
FROM dbo.Scores)
DROP TABLE dbo.Scores
다음과 같이 하는 것이 맞습니까?
IF EXISTS(SELECT * FROM dbo.Scores) DROP TABLE dbo.Scores
아니요. 테이블이 행을 포함하는 경우에만 테이블을 삭제합니다(테이블이 존재하지 않는 경우 오류가 발생합니다).
대신 영속적인 테이블의 경우
IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL
DROP TABLE dbo.Scores;
또는 임시 테이블의 경우
IF OBJECT_ID('tempdb.dbo.#TempTableName', 'U') IS NOT NULL
DROP TABLE #TempTableName;
SQL Server 2016+는 보다 나은 방법으로DROP TABLE IF EXISTS …
@Jovan의 답변을 참조하십시오.
SQL Server 2016부터는
DROP TABLE IF EXISTS dbo.Scores
참조: DROP IF EXISTES - SQL Server 2016의 새로운 기능
곧 SQL Azure Database에 포함될 예정입니다.
ANSI SQL/크로스 플랫폼 방법은 INFORMATION_SCHEMA를 사용하는 것입니다.INFORMATION_SCHEMA는 SQL 데이터베이스 내의 개체에 대한 메타 데이터를 쿼리하도록 특별히 설계되었습니다.
if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'Scores' AND TABLE_SCHEMA = 'dbo')
drop table dbo.Scores;
대부분의 최신 RDBMS 서버는 적어도 다음과 같은 기본적인 INFORMATION_SCHEMA 지원을 제공합니다.MySQL, Postgres, Oracle, IBM DB2 및 Microsoft SQL Server 7.0 이상.
잘 안 되는 걸 너무 많이 봐왔어임시 테이블이 생성되면 해당 테이블을 tempdb에서 삭제해야 합니다.
동작하는 코드는 다음과 같습니다.
IF OBJECT_ID('tempdb..#tempdbname') IS NOT NULL --Remove dbo here
DROP TABLE #tempdbname -- Remoeve "tempdb.dbo"
SQL Server 2016(13.x) 이후
DROP TABLE IF EXISTS dbo.Scores
이전 버전에서는
IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL
DROP TABLE dbo.Scores;
U는 당신의 것입니다.table type
또는 다음 중 하나를 선택합니다.
if exists (select * from sys.objects where name = 'Scores' and type = 'u')
drop table Scores
도움이 되었으면 합니다.
begin try drop table #tempTable end try
begin catch end catch
인수가 기존 테이블의 이름일 경우 1을 반환하고 그렇지 않을 경우 0을 반환하는 작은 UDF를 작성했습니다.
CREATE FUNCTION [dbo].[Table_exists]
(
@TableName VARCHAR(200)
)
RETURNS BIT
AS
BEGIN
If Exists(select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME = @TableName)
RETURN 1;
RETURN 0;
END
GO
테이블을 삭제하려면User
존재하는 경우는, 다음과 같이 부릅니다.
IF [dbo].[Table_exists]('User') = 1 Drop table [User]
심플한 것은 다음과 같습니다.
IF OBJECT_ID(dbo.TableName, 'U') IS NOT NULL
DROP TABLE dbo.TableName
어디에dbo.TableName
원하는 테이블이고 'U'는 원하는 테이블입니다.table
.
SQL Server 2016 이상에서는 가장 심플하고 좋은 것은 [테이블명]이 있는 경우 [테이블명]
예:
DROP TABLE IF EXISTS dbo.Scores
위의 것이 작동하지 않으면 아래의 것을 사용할 수 있습니다.
IF OBJECT_ID('dbo.Scores', 'u') IS NOT NULL
DROP TABLE dbo.Scores;
IF EXISTS (SELECT NAME FROM SYS.OBJECTS WHERE object_id = OBJECT_ID(N'Scores') AND TYPE in (N'U'))
DROP TABLE Scores
GO
사용방법:
if exists (select *
from sys.tables
where name = 'tableName'
and schema_id = schema_id('dbo'))
begin
drop table dbo.tableName
end
꼭 사용하세요cascade
테이블에 의존하는 모든 객체(예: 뷰 및 투영)를 자동으로 드롭하도록 끝에 구속조건을 설정합니다.
drop table if exists tableName cascade;
긴 코드를 사용하여 임시 테이블에 대한 쓰기를 줄이려면 다음 절차를 수행합니다.
CREATE PROCEDURE MF_DROP (@TEMP AS VARCHAR(100)) AS
EXEC('IF OBJECT_ID(''TEMPDB.DBO.' + @TEMP + ''', ''U'') IS NOT NULL DROP TABLE ' + @TEMP)
실행 중:
EXEC MF_DROP #A
CREATE TABLE #A (I INT) ....
Visual Studio를 사용하는 경우 메뉴바에서 여는 것이 보다 보기 쉽고 쉬운 방법입니다.
보기 -> SQL Server 객체 탐색기
여기 표시된 것처럼 열어야 합니다.
[ Select ](선택) 및 [Right](오른쪽)을 클릭하여 삭제할 테이블을 클릭한 후 삭제합니다.이러한 화면이 표시되어야 합니다.데이터베이스 업데이트를 클릭하여 확인합니다.
이 메서드는 피드백을 제공하고 삭제된 테이블과 다른 테이블의 관계에 대해 경고하므로 매우 안전합니다.
언급URL : https://stackoverflow.com/questions/7887011/how-to-drop-a-table-if-it-exists
'sourcecode' 카테고리의 다른 글
PowerShell 3의 파일 확장자 (0) | 2023.04.08 |
---|---|
보안 문자열을 일반 텍스트로 변환 (0) | 2023.04.08 |
PowerShell을 사용하여 텍스트 파일을 분할하려면 어떻게 해야 합니까? (0) | 2023.04.08 |
PowerShell에서 어셈블리를 로드하는 방법 (0) | 2023.04.08 |
이미지 옆에 텍스트를 수직으로 정렬하시겠습니까? (0) | 2023.04.08 |