[SQL] 디폴트 값으로 테이블에 열을 추가 기존 컬럼의 값과 동일
SQL디폴트 값으로 테이블에 열을 추가 기존 컬럼의 값과 동일
어떻게 기존의 컬럼의 값과 같은 기본 값으로 SQL Server 테이블에 열을 추가하려면?
나는이 T-SQL 문을 시도했다 :
ALTER TABLE tablename
ADD newcolumn type NOT NULL DEFAULT (oldcolumn)
그러나 그것은 오류를주고 :
해결법
-
==============================
1.이 시도:
이 시도:
ALTER TABLE tablename ADD newcolumn type NOT NULL DEFAULT (0) Go Update tablename SET newcolumn = oldcolumn Where newcolumn = 0 Go
-
==============================
2.난 아주 많이 그들처럼하지 않습니다 그러나 여기 당신이 AFTER 삽입 트리거와 함께이 작업을 수행 할 수있는 방법입니다 :
난 아주 많이 그들처럼하지 않습니다 그러나 여기 당신이 AFTER 삽입 트리거와 함께이 작업을 수행 할 수있는 방법입니다 :
CREATE TRIGGER TableX_AfterInsert_TRG ON TableX AFTER INSERT AS UPDATE TableX AS t SET t.newcolumn = t.oldcolumn FROM Inserted AS i WHERE t.PK = i.PK ; -- where PK is the PRIMARY KEY of the table
-
==============================
3.애프터 INSERT 트리거 방식으로 인해 추가 UPDATE 문에 오버 헤드를 포함한다. 다음과 같이 나는 INSTEAD INSERT의 트리거를 사용하는 것이 좋습니다 :
애프터 INSERT 트리거 방식으로 인해 추가 UPDATE 문에 오버 헤드를 포함한다. 다음과 같이 나는 INSTEAD INSERT의 트리거를 사용하는 것이 좋습니다 :
CREATE TRIGGER tablename_on_insert ON tablename INSTEAD OF INSERT AS INSERT INTO tablename (oldcolumn, newcolumn) SELECT oldcolumn, ISNULL(newcolumn, oldcolumn) FROM inserted
이것은 oldcolumn가 자동 ID 열 경우 비록 작동하지 않습니다.
-
==============================
4.카필의 답변을 확장하고, 원하지 않는 기본 제약 조건을 방지하기 위해,이 시도 :
카필의 답변을 확장하고, 원하지 않는 기본 제약 조건을 방지하기 위해,이 시도 :
ALTER TABLE tablename ADD newcolumn type NOT NULL CONSTRAINT DF_TMP_TABLENAME_NEWCOLUMN DEFAULT -9999 Go Update tablename SET newcolumn = oldcolumn Go ALTER TABLE tablename DROP CONSTRAINT DF_TMP_TABLENAME_NEWCOLUMN Go
당신의 유형은 VARCHAR, NVARCHAR, 날짜, ... 또는 다른 유형의 호환 데이터에 의한 경우 'NODATA'에 의해 -9999 교체 : 특정 값은 중요하지 않습니다, 그것은 2 차 명령에 의해 삭제됩니다.
-
==============================
5.기존 열 값을 기준으로 테이블에 새 열을 삽입 할 계산 열을 사용할 수 있습니다
기존 열 값을 기준으로 테이블에 새 열을 삽입 할 계산 열을 사용할 수 있습니다
ALTER TABLE dbo.TableName ADD NewColumn AS (OldColumn) PERSISTED;
또는, 당신은 기존의 열 값을 기준 값으로 일부 내용을 변경하려는 경우, 사용
ALTER TABLE dbo.TableName ADD NewColumn AS (OldColumn * 1.5) PERSISTED;
-
==============================
6.내 경우, 나는 CODE라는 새 NOT NULL 고유의 열을 추가하고 싶지만 내가 작성시 가치에 대해 모른다. 내가 NEWID에서 기본 값을 얻을하여에 대한 기본 값을 설정 () 나중에 업데이트합니다.
내 경우, 나는 CODE라는 새 NOT NULL 고유의 열을 추가하고 싶지만 내가 작성시 가치에 대해 모른다. 내가 NEWID에서 기본 값을 얻을하여에 대한 기본 값을 설정 () 나중에 업데이트합니다.
ALTER TABLE [WIDGET] ADD [CODE] CHAR(5) NOT NULL DEFAULT(SUBSTRING(CONVERT(CHAR(36), NEWID()), 1, 5)) ALTER TABLE [dbo].[WIDGET] WITH CHECK ADD CONSTRAINT [UQ_WIDGET_CODE] UNIQUE ([CODE])
-
==============================
7.나는 당신이 설정 IDENTITY_INSERT
OFF하고 방금 설정 IDENTITY_INSERT ON을 사용 썼다 삽입 문 다음에 사용하는 경우가 작동합니다 생각합니다. 나는 당신이 설정 IDENTITY_INSERT
OFF하고 방금 설정 IDENTITY_INSERT ON을 사용 썼다 삽입 문 다음에 사용하는 경우가 작동합니다 생각합니다.
from https://stackoverflow.com/questions/13249936/add-a-column-to-a-table-with-a-default-value-equal-to-the-value-of-an-existing-c by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 새 선택적 매개 변수를 허용하도록 SQL 서버 기능을 변경합니다 (0) | 2020.06.27 |
---|---|
[SQL] 어떻게 SQL 데이터베이스 테이블에 날짜를 삽입? (0) | 2020.06.27 |
[SQL] 방법 / 플러시 MySQL의 InnoDB의 버퍼 풀을 지우려면? (0) | 2020.06.27 |
[SQL] PHP SQL SELECT 경우 여러 단어 검색 항목과 같은 (0) | 2020.06.27 |
[SQL] SSIS에 대한 권장 학습 재료를 무엇입니까? [닫은] (0) | 2020.06.27 |