답변:
옵션으로 처음에 Null 허용 열을 만든 다음 유효한 null이 아닌 값으로 테이블 열을 업데이트하고 마지막으로 ALTER 열을 업데이트하여 NOT NULL 제약 조건을 설정할 수 있습니다.
ALTER TABLE MY_TABLE ADD STAGE INT NULL
GO
UPDATE MY_TABLE SET <a valid not null values for your column>
GO
ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL
GO
또 다른 옵션은 열에 올바른 기본값을 지정하는 것입니다.
ALTER TABLE MY_TABLE ADD STAGE INT NOT NULL DEFAULT '0'
UPD : 위의 답변에는 GO
Microsoft SQL 서버에서이 코드를 실행할 때 필수 항목이 포함되어 있습니다 . Oracle 또는 MySQL에서 동일한 작업을 수행하려면 다음과 같은 세미콜론을 사용해야 ;
합니다.
ALTER TABLE MY_TABLE ADD STAGE INT NULL;
UPDATE MY_TABLE SET <a valid not null values for your column>;
ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL;
update
언급 한 위험한 진술은 모든 쿼리에서 해로울 수 있습니다. update
여기 문에 추가 열이 있는지 확인하는 것은 간단해야합니다 . 일반적으로 한 번에 한 두 개의 열만 추가합니다. update
이 예에서 여기에 속하지 않는 추가 열을 명세서에 추가 하면 처음부터 데이터를 담당해서는 안됩니다.
ALTER COLUMN
는 SQLite에서 지원되지 않음을 알고 있어야합니다 .
GO
전에 본 적이 없으며 SQL 사양의 일부 가 아닌 것처럼 보이 므로 스크립트를 지원하는 도구 중 하나에서 실행되지 않는 스크립트로 인해 실패 할 수 있습니다. 세미콜론 만 사용 하시겠습니까? Microsoft 표준을 널리 알리는 것은 권장하지 않습니다. 그들은 확립되고 합리적인 표준을 거의 신경 쓰지 않고 자체적으로 발명하기 위해 자체적으로 발명합니다. 그 외에도 유용한 답변입니다.
열이 Null이되도록 허용하지 않는 경우 기존 행을 채우기위한 기본값을 제공해야합니다. 예 :
ALTER TABLE dbo.YourTbl ADD
newcol int NOT NULL CONSTRAINT DF_YourTbl_newcol DEFAULT 0
Enterprise Edition에서는 2012 년 이후 메타 데이터 만 변경 되었습니다.
다른 SQL 구현에도 유사한 제한이 있습니다. 그 이유는 열을 추가하려면 해당 열에 대한 값을 추가해야하므로 (물리적으로는 아니더라도 논리적으로) 기본값은 NULL
. 허용 NULL
하지 않고가없는 경우 default
값은 무엇입니까?
SQL Server가를 지원하므로 ADD CONSTRAINT
Pavel의 nullable 열을 만든 다음 비값으로 NOT NULL
채운 후 제약 조건 을 추가하는 것이 좋습니다 NULL
.
ALTER TABLE `MY_TABLE` ADD COLUMN `STAGE` INTEGER UNSIGNED NOT NULL AFTER `PREV_COLUMN`;
Alter TABLE 'TARGET' add 'ShouldAddColumn' Integer Not Null default "0"