0

我不断收到以下错误:

消息 547,级别 16,状态 0,过程 add_new_customer,第 6 行
INSERT 语句与 CHECK 约束“CK__customer__addres__09A971A2”冲突。冲突发生在数据库“AIT 732 - 银行”、表“dbo.customer”、列“address_state”中。

以下是我尝试更新的表格:

create table customer
(
cust_id numeric(10,0) not null identity primary key,
social_security_num numeric(9,0) not null,
first_name varchar(20) not null,
last_name varchar(20) not null,
primary_address varchar(50) not null,
address_zip_code numeric(5,0) not null,
address_state char(2) check (address_state in('md','pa','dc', 'de', 'wv', 'va','nj')),
gender char(1) not null check (gender in('m','f')),
phone_num numeric(10,0) null
)

这是我创建的存储过程:

create procedure add_new_customer
    (@social_sec numeric, @f_name varchar, @l_name varchar, @pri_address varchar, @zip numeric, @add_state char, @gender char, @phone numeric)
    as
    begin
        begin transaction
        insert into customer(
        social_security_num,
        first_name,
        last_name,
        primary_address,
        address_zip_code,
        address_state,
        gender,
        phone_num)
        values (
        @social_sec, 
        lower(@f_name), 
        lower(@l_name),
        lower(@pri_address), 
        @zip, 
        lower(@add_state), 
        lower(@gender), 
        @phone)
    if @@ERROR != 0 
    begin
        rollback transaction
        return @@error
    end
    commit transaction
 end

最后但并非最不重要的是,这就是我调用程序的方式

add_new_customer 211118888, 'Bob', 'JONES', '222 some st', 21333, 'md', 'm', 4102227878

我已经搞砸了大约一个小时,无法弄清楚这个错误来自哪里。任何帮助,将不胜感激。

4

1 回答 1

3

您存储的 proc 参数定义是@add_state char,但这会将您的“md”输入值截断为“m”,这不是有效值。更改您的参数定义以匹配表 defn char(2),然后它应该可以工作。

于 2014-04-21T23:23:44.457 回答