SQL Server错误:INSERT语句与CHECK约束冲突

INSERT语句与CHECK约束“ ck_str_member_no”冲突。在数据库“ C:\ DOCUMENTS AND SETTINGS \

KARTHIKEYAN \ DESKTOP \ KOK \ DB \ INFT3009_ASS1_C3104855.MDF”的表“

dbo.Members”的列“ str_member_no”中发生了冲突。该语句已终止。

我在Visual Studio 2008 Express中使用.MDF文件。我该如何解决?

我的插入程序:


ALTER PROCEDURE [dbo].[AddNewAGCMember] 

-- Add the parameters for the stored procedure here

@str_member_no varchar(6) = '',

@str_member_name varchar(50) = '',

@str_member_password varchar(10) = '',

@str_addr_apartment_no varchar(10) = NULL,

@str_addr_building_name varchar(50) = NULL,

@str_addr_street_name varchar(50) = NULL,

@int_postal_code int = NULL,

@str_country_name varchar(50) = NULL,

@int_contact_no int = NULL,

@str_email_addr varchar(100) = '',

@date_registration date = ''

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

-- Insert statements for procedure here

INSERT INTO Members

(str_member_no,

str_member_name,

str_member_password,

str_addr_apartment_no,

str_addr_building_name,

str_addr_street_name,

int_postal_code,

str_country_name,

int_contact_no,

str_email_addr,

date_registration)

VALUES

(@str_member_no,

@str_member_name,

@str_member_password,

@str_addr_apartment_no,

@str_addr_building_name,

@str_addr_street_name,

@int_postal_code,

@str_country_name,

@int_contact_no,

@str_email_addr,

@date_registration);

END


表结构:

  • str_member_no,varchar(6),未选中
  • str_member_name,varchar(50),未选中
  • str_member_password,varchar(10),未选中
  • str_addr_apartment_no,varchar(10),已检查
  • str_addr_building_name,varchar(50),已检查
  • str_addr_street_name,varchar(50),已检查
  • int_postal_code,int,已检查
  • str_country_name,varchar(50),已检查
  • int_contact_no,int,已检查
  • str_email_addr,varchar(100),未选中
  • date_registration,日期,未选中
    Unchecked

回答:

显然,您的插入内容违反了检查约束。这是数据库中的一个约束,它会执行特定的检查-数值是否在特定范围内,字符串的长度最多为n个字符或任何其他形式。

要找出检查约束是什么,请尝试以下操作:

SELECT

name, definition

FROM

sys.check_constraints

WHERE

name = 'ck_str_member_no'

这将为您提供在“定义”列中正在检查的表达式。

通过该表达式,您应该能够确定插入被拒绝的原因。解决该问题,然后再次插入。

如果您确实无法修复数据,并且不需要/不需要该检查约束,则可以将其删除:

ALTER TABLE dbo.Members

DROP CONSTRAINT ck_str_member_no

马克

以上是 SQL Server错误:INSERT语句与CHECK约束冲突 的全部内容, 来源链接: utcz.com/qa/413768.html

回到顶部