기본값 없이 null이 아닌 열을 추가할 수 있습니까?
NOT NULL로 지정한 컬럼을 추가할 수 있습니까?기본값은 지정하지 않지만 MS-SQL 2005는 다음과 같이 표시됩니다.
ALTER TABLE은 늘을 포함할 수 있는 열 또는 DEFAULT 정의를 지정할 수 있는 열만 추가할 수 있습니다.또한 추가할 열이 ID 또는 타임스탬프 열이거나 이전 조건이 모두 충족되지 않은 경우 이 열을 추가하려면 테이블을 비워 두어야 합니다.'test' 열은 이러한 조건을 충족하지 않으므로 비어 있지 않은 테이블 'shiplist'에 추가할 수 없습니다.
YES의 경우 구문을 알려주시고, No의 경우 이유를 명시해 주십시오.
아니, 그럴 수 없다.
SQL은 기존 레코드에 어떤 가치를 부여해야 할지 알 수 없기 때문입니다.테이블에 레코드가 없어도 문제없이 작동합니다.
가장 간단한 방법은 기본값으로 열을 만든 다음 기본값을 제거하는 것입니다.
ALTER TABLE dbo.MyTable ADD
MyColumn text NOT NULL CONSTRAINT DF_MyTable_MyColumn DEFAULT 'defaultValue'
ALTER TABLE dbo.MyTable
DROP CONSTRAINT DF_MyTable_MyColumn
또 다른 방법은 제약 없이 열을 추가하고 모든 셀의 값을 채운 다음 제약 조건을 추가하는 것입니다.
테이블에 열을 추가하고 null이 되지 않도록 기존 행을 업데이트한 다음 "not null" 제약 조건을 추가합니다.
아니요 - SQL Server는 기존 행의 값을 모르기 때문에 이 값을 상당히 합리적으로 거부합니다.
DEFAULT를 동시에 작성한 후 즉시 파기할 수 있습니다.
기본값 없이 NOT NULL 열을 삽입하려면 이 방법을 사용합니다.
ALTER TABLE [Table] ADD [Column] INT NULL
GO
UPDATE [Table] SET [Column] = <default_value>
ALTER TABLE [Table] ALTER COLUMN [Column] INT NOT NULL
아니요.
빈 문자열만 사용''
(문자 타입의 경우) 또는 0(숫자의 경우) 등의 디폴트 값
아니, 너는 할 수 없어.단, 디폴트값을 ('')로 지정하는 것을 고려할 수 있습니다.
아니요, SQL Server 또는 다른 데이터베이스 엔진은 데이터 테이블의 기존 행에 대해 이 새 열을 강제로 null로 만들기 때문에 그럴 수 없습니다.그러나 NULL을 허용하지 않기 때문에 자신의 제약 조건을 준수하기 위해 기본값을 지정해야 합니다.이건 대단한 의미에 속한다!DBE는 기존 행의 null이 아닌 값에 대한 값을 추정하지 않습니다.
@데미엔_The_Unbeliever's comment, 계산 컬럼을 추가하고 있습니까?질문도 대답도 그런 의미는 없었다.계산된 열의 경우 오류 상태는 다음과 같습니다.
"계산된 열에는 고유 키 또는 기본 키 제약 조건만 생성할 수 있지만 CHECK, FORENAL KEY 및 NOT NULL 제약 조건은 계산된 열을 유지해야 합니다."
네, 이 추측 게임을 계속 진행하려면 다음 스크립트에서 "ALTER TABLE" 스텝에 "NOT NULL" 컬럼을 추가합니다.
CREATE TABLE TestInsertComputedColumn
(
FirstName VARCHAR(100),
LastName CHAR(50)
);
insert into TestInsertComputedColumn(FirstName,LastName)
select 'v', 'gv8';
select * from TestInsertComputedColumn;
ALTER TABLE TestInsertComputedColumn
ADD FullName As FirstName + LastName PERSISTED NOT NULL;
select * from TestInsertComputedColumn;
--drop TABLE TestInsertComputedColumn;
아래 방법을 사용했는데 효과가 있었습니다.
Syntax:
ALTER TABLE <YourTable> ADD <NewColumn> <NewColumnType> NOT NULL DEFAULT <DefaultValue>
Example:
ALTER TABLE Tablename ADD ColumnName datetime NOT NULL DEFAULT GETDATE();
옵션으로 처음에 Null-able 열을 작성한 후 테이블 열을 유효한 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
언급URL : https://stackoverflow.com/questions/3997966/can-i-add-a-not-null-column-without-default-value
'programing' 카테고리의 다른 글
왜 애플은 ARC에서 싱글톤 패턴을 구현하기 위해 dispatch_once를 사용할 것을 권장합니까? (0) | 2023.04.09 |
---|---|
Update 문에서 테이블 별칭을 사용하는 좋은 방법입니까? (0) | 2023.04.09 |
SQL Server 2008에서 선택한 쿼리 결과에서 테이블을 생성하는 방법 (0) | 2023.04.09 |
xcrun not find simctl 오류를 수정하려면 어떻게 해야 하나요? (0) | 2023.04.09 |
UILabel 글꼴 크기 동적 변경 (0) | 2023.04.09 |