programing

SQL Server에서 'id' 열에 NULL 값을 삽입할 수 없습니다.라는 오류가 발생하는 이유는 무엇입니까?

jooyons 2023. 4. 15. 08:45
반응형

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을 사용하다

이 값을 설정해야 합니다. 그렇지 않으면 Null이 아닌 열이 기본값 없이 있는 경우 값을 지정하지 않으면 오류가 발생합니다.

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

  • ★★★★★★★★★★★★★★★★★★의 테이블을 엽니다.Design
  • 을 선택하고 '다'로 합니다.Column Properties
  • 래래 under Indentity Specification , set , syslogs(Is Identity)=Yes ★★★★★★★★★★★★★★★★★」Indentity 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의 열은 '이렇게 하다'가 .Auto Increment따라서 이 에러가 발생합니다.을 「 「 」로 해 주세요.Primary Key가 없다.null을 포함하므로 중복되지 않습니다.Auto Increment이나 column does not allow nulls. INSERT fails.

이 문제를 해결할 수 있는 방법은 두 가지가 있습니다.

1) MS SQL Server Management Studio 경유

  1. MS SQL Server Management Studio로 이동

  2. 테이블을 찾아 오른쪽 버튼을 클릭한 후 [Design](설계)를 선택합니다.

  3. 열을 찾아 열 속성으로 이동합니다.

  4. [ Indentity Specification ] : set ( Identity is Identity ) 。=예 및 들여쓰기 증가=1

2) ALTER SQL 경유

ALTER TABLE table DROP COLUMN id; // drop the existing ID
ALTER TABLE table ADD id int IDENTITY(1, 1) NOT NULL; // add new column ID with auto-increment
ALTER TABLE table ADD CONSTRAINT PK_ident_test PRIMARY KEY CLUSTERED (id); // make it primary key

삽입물에 ID를 지정하거나 데이터베이스의 ID 열을 ID 사양 = 예로 구성해야 합니다.

ID는 PK이므로 고유해야 하며 null이 아닙니다.삽입하기 위해 필드 목록에 필드를 지정하지 않으면 null 또는 기본값으로 간주됩니다.매번 수동으로 설정하지 않으려면 이 필드의 ID(즉, 자동 증가)를 설정합니다.

테이블을 작성할 때 id 열의 자동 증가 속성을 true로 설정해야 합니다.또는 기존 테이블을 변경하여 이 작업을 수행할 수 있습니다.

id 값을 알려주지 않았군요다음을 시도해 보십시오.

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

id 값을 자동으로 추가해야 하는 경우 id 필드에 자동 증분 값을 설정할 수 있습니다.

저도 비슷한 문제가 있어서 알아보니 실제 테이블에서 필드가 누락되어 있을 뿐입니다.id이었다empty/null). 즉, 필드를 작성하려고 하면 에러가 발생합니다.테이블에 값이 있는 행이 포함되어 있기 때문입니다.

이는 오류와 관련된 임시 테이블이 표시되는 경우 수정일 수 있습니다.SQL Server Management Studio를 사용하고 있었습니다.

경고! 메서드를 사용할 때 대상 테이블이 잠겨 있는지 확인하십시오(@OnurOmer의 설명에 따라).

ID의 자동 증분 속성을 설정할 수 없거나 설정하지 않으려면 다음과 같이 각 행의 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)

규칙: 새 데이터를 삽입할 때 null 값을 허용하지 않는 컬럼을 무시할 수 없습니다.

고객님의 케이스

  • 값 삽입을 시도하고 있지만, 이 값은 무시합니다.id컬럼. null은 사용할 수 없습니다.분명히 이건 효과가 없을 거야.
  • "ID 사양"은 자동으로 무효가 아닌 항목을 채우는 것 같습니다.id나중에 삽입 쿼리를 실행할 때 값을 지정합니다(선택한 답변 참조).

마이 케이스

  • 문제(SSMS 사용 중): 데이터가 있는 기존 테이블에 Null이 아닌 새 열을 추가하려고 할 때 이 오류가 발생했습니다.내가 받은 오류는 다음과 같다.

'id_foreign', 테이블 'MyDataBase.dbo'에 NULL 값을 삽입할 수 없습니다.Tmp_ThisTable'; 열은 null을 허용하지 않습니다.INSERT 실패.문이 종료되었습니다.

  • 해결 방법:
    1. 필요한 칼럼을 만들었습니다.id_foreignnull을 허용합니다.
    2. 필요한 값을 모두 편집/삽입했습니다.id_foreign.
    3. 값이 지정되면 다시 돌아가서 [Allow Nulls]체크박스를 끄겠습니다이제 오류가 사라졌습니다.

언급URL : https://stackoverflow.com/questions/10013313/why-is-sql-server-throwing-this-error-cannot-insert-the-value-null-into-column

반응형