SQL Server 저장 프로 시저에서 계단식 삽입을 수행하고 있습니다. 그런 다음 첫 번째 표 삽입의 ID에서 SCOPE_IDENTITY
을 두 번째 표로 전달합니다. 계단식 삽입에서 null Scope_Indentity를 해결하는 방법은 무엇입니까?
하지만이 SCOPE_IDENTITY
에 대한 NULL 값을 얻을 저장 프로 시저를 실행하는 동안
이 컬럼에 NULL 값을 삽입 할 수 없습니다
메시지 515, 수준 16, 상태 2, 프로 시저 InsertDDM_UserProfile, 라인 43 '필터 ', 테이블'..... dbo.DDM_Dashboard '; 열이 널을 허용하지 않습니다. INSERT가 실패합니다.
질문 : 왜 저장 프로 시저가 SCOPE_IDENTITY
를 사용하여 널 ID를 반환합니까?
이것은 초안을 작성한 저장 프로 시저입니다.
ALTER PROCEDURE [dbo].[InsertDDM_UserProfile]
@p_email VARCHAR(100),
@p_dashboardName VARCHAR(100),
AS
BEGIN
INSERT INTO [dbo].[DDM_User] ([Email])
VALUES (@p_email)
INSERT INTO [dbo].[DDM_Dashboard] ([Dashboard_Name], [DDM_USER_ID])
VALUES (@p_dashboardName, SCOPE_IDENTITY())
END
을 그리고 아래의 두 테이블의 구조입니다 : FK 제약이 이미 테이블에 설정 한
DDM_User-
이CREATE TABLE [dbo].[DDM_User]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[Email] [varchar](80) NOT NULL,
CONSTRAINT [PK_DDMUser]
PRIMARY KEY CLUSTERED ([ID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
DDM_Dashboard가 :
CREATE TABLE [dbo].[DDM_Dashboard]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[Dashboard_Name] [varchar](100) NOT NULL,
[DDM_USER_ID] [int] NOT NULL,
CONSTRAINT [PK_DDMDashboard]
PRIMARY KEY CLUSTERED ([ID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[DDM_Dashboard] WITH NOCHECK
ADD CONSTRAINT [FK_DDMDashboard_DDMUser]
FOREIGN KEY([DDM_USER_ID]) REFERENCES [dbo].[DDM_User] ([ID])
GO
ALTER TABLE [dbo].[DDM_Dashboard] CHECK CONSTRAINT [FK_DDMDashboard_DDMUser]
GO
두 테이블의 테이블 스키마를 볼 수 있습니까? DDM_Dashboard의 필터 열은 Null을 허용하지 않으며 삽입 문에 없습니다. –
물론 게시하겠습니다. –