반응형
테이블(아직 존재하지 않는 경우)에 열을 추가합니다.
테이블에 열을 추가하는 MS SQL Server 쿼리를 작성하려고 합니다.그러나 다음 쿼리를 실행/실행할 때 오류가 표시되지 않도록 합니다.
테이블을 추가하기 위해 이런 종류의 쿼리를 사용하고 있습니다.
IF EXISTS (
SELECT *
FROM sys.objects
WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[Person]')
AND TYPE IN (N'U')
)
그런데 이 질문을 칼럼에 어떻게 써야 할지 모르겠어요.
유사한 구성을 사용할 수 있습니다.sys.columns
테이블 IOsys.objects
.
IF NOT EXISTS (
SELECT *
FROM sys.columns
WHERE object_id = OBJECT_ID(N'[dbo].[Person]')
AND name = 'ColumnName'
)
IF COL_LENGTH('table_name', 'column_name') IS NULL
BEGIN
ALTER TABLE table_name
ADD [column_name] INT
END
또 다른 대안.나는 이 접근방식이 작성이 적기 때문에 더 선호하지만 두 가지 방법은 같은 것을 성취한다.
IF COLUMNPROPERTY(OBJECT_ID('dbo.Person'), 'ColumnName', 'ColumnId') IS NULL
BEGIN
ALTER TABLE Person
ADD ColumnName VARCHAR(MAX) NOT NULL
END
나는 또한 당신의 테이블이 어디에 있는지 찾고 있다는 것을 알아차렸는데, 그것은 명백하게 이것뿐입니다.
if COLUMNPROPERTY( OBJECT_ID('dbo.Person'),'ColumnName','ColumnId') is not null
여기 제게 효과가 있었던 또 다른 변형이 있습니다.
IF NOT EXISTS (SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE upper(TABLE_NAME) = 'TABLENAME'
AND upper(COLUMN_NAME) = 'COLUMNNAME')
BEGIN
ALTER TABLE [dbo].[Person] ADD Column
END
GO
편집: 주의:
INFORMATION_SCHEMA
뷰가 항상 업데이트되는 것은 아닙니다.SYS.COLUMNS
대신:
IF NOT EXISTS (SELECT 1 FROM SYS.COLUMNS....
IF NOT EXISTS (SELECT * FROM syscolumns
WHERE ID=OBJECT_ID('[db].[Employee]') AND NAME='EmpName')
ALTER TABLE [db].[Employee]
ADD [EmpName] VARCHAR(10)
GO
이게 도움이 되었으면 좋겠어요.상세 정보
다른 데이터베이스에서 열을 확인할 때 데이터베이스 이름을 포함할 수 있습니다.
IF NOT EXISTS (
SELECT *
FROM DatabaseName.sys.columns
WHERE object_id = OBJECT_ID(N'[DatabaseName].[dbo].[TableName]')
AND name = 'ColumnName'
)
IF NOT EXISTS (SELECT 1 FROM SYS.COLUMNS WHERE
OBJECT_ID = OBJECT_ID(N'[dbo].[Person]') AND name = 'DateOfBirth')
BEGIN
ALTER TABLE [dbo].[Person] ADD DateOfBirth DATETIME
END
언급URL : https://stackoverflow.com/questions/8870802/add-a-column-to-a-table-if-it-does-not-already-exist
반응형
'source' 카테고리의 다른 글
SQL Server 2008 열 이름 변경 (0) | 2023.04.07 |
---|---|
데이터베이스에 있는 모든 테이블의 크기를 가져옵니다. (0) | 2023.04.07 |
datetime2 데이터 유형을 datetime 데이터 유형으로 변환하면 값이 범위를 벗어납니다. (0) | 2023.04.07 |
비프라이머리 키에 대한 외부 키 (0) | 2023.04.07 |
SQL - 문자열을 검색하는 동안 대/소문자 무시 (0) | 2023.04.07 |