programing tip

테이블에 열을 아직 추가하지 않은 경우 추가

itbloger 2020. 6. 2. 08:25
반응형

테이블에 열을 아직 추가하지 않은 경우 추가


테이블에 열을 추가하는 MS SQL Server에 대한 쿼리를 작성하고 싶습니다. 그러나 다음 쿼리를 실행 / 실행할 때 오류 표시를 원하지 않습니다.

이 종류의 쿼리를 사용하여 테이블을 추가하고 있습니다 ...

IF EXISTS (
       SELECT *
       FROM   sys.objects
       WHERE  OBJECT_ID = OBJECT_ID(N'[dbo].[Person]')
              AND TYPE IN (N'U')
   )

그러나 열에 대한이 쿼리를 작성하는 방법을 모르겠습니다.


sys.columnsio 테이블을 사용하여 유사한 구성을 사용할 수 있습니다 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

반응형