[sql] SQL Server에서이 오류가 발생하는 이유 : ‘id’열에 NULL 값을 삽입 할 수 없습니다.

다음 쿼리를 사용하고 있습니다.

INSERT INTO role (name, created) VALUES ('Content Coordinator', GETDATE()), ('Content Viewer', GETDATE())

그러나 기본 키 ()를 지정하지 않습니다 id. 그래서 내 질문은 왜 SQL Server 가이 오류로 돌아 오는 것입니까?

Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'id', table 'CMT_DEV.dbo.role'; column does not allow nulls. INSERT fails.
The statement has been terminated.



답변

나는 그것이 id증가하는 값 이라고 가정하고 있습니다.

이를 설정해야합니다. 그렇지 않으면 기본값이없는 널 불가능한 열이있는 경우 값을 제공하지 않으면 오류가 발생합니다.

SQL Server Management Studio에서 자동 증가를 설정하려면 :

  • 테이블 열기 Design
  • 열을 선택하고 Column Properties
  • 에서 Indentity Specification설정 (Is Identity)=YesIndentity Increment=1


답변

IDENTITY(1,1)예를 들어 테이블을 만드는 동안 사용

CREATE TABLE SAMPLE(
[Id]     [int]  IDENTITY(1,1) NOT NULL,
[Status] [smallint] NOT NULL,

CONSTRAINT [PK_SAMPLE] PRIMARY KEY CLUSTERED
(
    [Id] ASC
)
)


답변

경우 id열이 기본값이 없지만,이 NOT NULL제약 조건을, 당신은 가치를 직접 제공해야

INSERT INTO dbo.role (id, name, created) VALUES ('something', 'Content Coordinator', GETDATE()), ('Content Viewer', GETDATE())


답변

id의 autoincrement 속성을 설정할 수 없거나 설정하지 않으려면 다음과 같이 각 행의 id 값을 설정할 수 있습니다.

INSERT INTO role (id, name, created)
SELECT
      (select max(id) from role) + ROW_NUMBER() OVER (ORDER BY name)
    , name
    , created
FROM (
    VALUES
      ('Content Coordinator', GETDATE())
    , ('Content Viewer', GETDATE())
) AS x(name, created)


답변

삽입에 ID를 지정하거나 ID 사양 = Yes를 갖도록 데이터베이스의 id 열을 구성해야합니다.


답변

id는 PK이므로 고유해야하며 null이 아니어야합니다. 삽입을 위해 필드 목록에서 필드를 언급하지 않으면 null 또는 기본값으로 간주됩니다. 매번 수동으로 설정하지 않으려면이 필드에 대한 ID (예 : 자동 증가)를 설정하십시오.


답변

테이블을 생성 할 때 id 열의 autoincrement 속성을 true로 설정하거나 기존 테이블을 변경하여이를 수행 할 수 있습니다.