반응형
테이블에 열을 아직 추가하지 않은 경우 추가
테이블에 열을 추가하는 MS SQL Server에 대한 쿼리를 작성하고 싶습니다. 그러나 다음 쿼리를 실행 / 실행할 때 오류 표시를 원하지 않습니다.
이 종류의 쿼리를 사용하여 테이블을 추가하고 있습니다 ...
IF EXISTS (
SELECT *
FROM sys.objects
WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[Person]')
AND TYPE IN (N'U')
)
그러나 열에 대한이 쿼리를 작성하는 방법을 모르겠습니다.
sys.columns
io 테이블을 사용하여 유사한 구성을 사용할 수 있습니다 sys.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 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
반응형
'programing tip' 카테고리의 다른 글
if (객체 입력) 또는 if (object.hasOwnProperty (key) (0) | 2020.06.02 |
---|---|
HTML 텍스트 상자에서 키보드 캐럿 위치 설정 (0) | 2020.06.02 |
함수에서 docstring 가져 오기 (0) | 2020.06.02 |
파이썬 문자열에서 마지막 구분 기호로 나누시겠습니까? (0) | 2020.06.02 |
SQL OVER () 절-언제 그리고 왜 유용합니까? (0) | 2020.06.02 |