SQL Server 2008 这是我得到的错误信息。 错误:消息547,级别16,状态0,行1 INSERT语句与CHECK约束“CK__S_ODS_L2 __ ACTIV _7A5F6E76”冲突。冲突发生在数据库“SourceDB”,表“dbo.Datatbl”,列“ACTIVE_FLAG”中。
但是此列的默认值为“Y”。 这是表脚本 使用[SourceDB] GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Datatbl](
[BATCH_NB] [varchar](10) NULL,
[RCRD_NB] [varchar](10) NULL,
[STS_CD] [varchar](10) NULL,
[ENTR_DT] [varchar](50) NULL,
[COMMENTS_TXT] [varchar](500) NULL,
[ACTIVE_FLAG] [char](1) NOT NULL,
[Err_CD] [varchar](15) NULL,
[Source_Fld_Name] [varchar](500) NULL,
[Source_Fld_Val] [varchar](500) NULL,
[Error_Desc] [varchar](500) NULL,
[ISRT_USR] [varchar](10) NULL,
[UPDT_USR] [varchar](10) NULL,
[ISRT_DT] [varchar](50) NULL,
[UPDT_DT] [varchar](50) NULL,
[ProcessDate] [datetime] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Datatbl] WITH CHECK ADD CHECK (([ACTIVE_FLAG]='N' OR [ACTIVE_FLAG]='Y'))
GO
ALTER TABLE [dbo].[Datatbl] ADD DEFAULT ('Y') FOR [ACTIVE_FLAG]
GO
这是我的插入查询
INSERT INTO Datatbl
(BATCH_NB,
RCRD_NB,
STS_CD,
ENTR_DT,
COMMENTS_TXT,
ACTIVE_FLAG,
Err_CD,
Source_Fld_Name,
Source_Fld_Val,
Error_Desc,
ISRT_USR,
UPDT_USR,
ISRT_DT,
UPDT_DT,
ProcessDate)
Values (
46401, --Batch
'308', --Rcrd_NB
'1', --STS_CD
'2014-03-07 15:03:11.000000', -- Entr_DT
'Comments test', --comments
'', -- Active_flag, see no value here
'',--Err_Cd
'',--Src_Fld_Nm
'',--Src_Fld_Val
'Error description ', --ErrDesc
'${user_id}', --Inst User
'', --Updt User
'2014-03-07 15:03:11.958578', --ISRT_DT
'',--UPDT_DT
'01/15/2014') -- Processdate
直到最近这种情况一直很好,但不知何故不起作用。 我不确定数据库方面有什么变化,或者数据可能就是这里的问题。
任何想法,请。让我知道。
谢谢, 辛迪!!
答案 0 :(得分:0)
查询的问题是您为ACTIVE_FLAG添加了值'',当您将值传递给列时,将不会采用默认值。
如果要在列中插入默认值: - (1)只需从iNSERT命令中删除列及其值即可 要么 (2)用DEFAULT关键字替换它,(''不等于'Y'或'N',这是根本原因)
INSERT INTO Datatbl
(BATCH_NB,
RCRD_NB,
STS_CD,
ENTR_DT,
COMMENTS_TXT,
ACTIVE_FLAG,
Err_CD,
Source_Fld_Name,
Source_Fld_Val,
Error_Desc,
ISRT_USR,
UPDT_USR,
ISRT_DT,
UPDT_DT,
ProcessDate)
Values (
46401, --Batch
'308', --Rcrd_NB
'1', --STS_CD
'2014-03-07 15:03:11.000000', -- Entr_DT
'Comments test', --comments
--'', -- Active_flag, see no value here
DEFAULT, -- value replaced with default
'',--Err_Cd
'',--Src_Fld_Nm
'',--Src_Fld_Val
'Error description ', --ErrDesc
'${user_id}', --Inst User
'', --Updt User
'2014-03-07 15:03:11.958578', --ISRT_DT
'',--UPDT_DT
'01/15/2014') -- Processdate