테이블에 열을 추가하는 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 *
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