問題描述
INSERT 語句與 CHECK 約束ck_str_member_no
"沖突.沖突發(fā)生在數(shù)據(jù)庫C:\DOCUMENTS AND SETTINGS\KARTHIKEYAN\DESKTOP\KOK\DB\INFT3009_ASS1_C3104855.MDF",表dbo.Members",列str_member_no
"中.聲明已終止.
The INSERT statement conflicted with the CHECK constraint "ck_str_member_no
". The conflict occurred in database "C:\DOCUMENTS AND SETTINGS\KARTHIKEYAN\DESKTOP\KOK\DB\INFT3009_ASS1_C3104855.MDF", table "dbo.Members", column 'str_member_no
'.
The statement has been terminated.
我在 Visual Studio 2008 Express 中使用 .MDF 文件.我該如何解決?
I am using .MDF file in my visual studio 2008 Express. How do I solve it?
我的插入程序:
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
<小時>
表結(jié)構(gòu):
Table structure :
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), Checkedint_postal_code
, int, Checkedstr_country_name
, varchar(50), Checkedint_contact_no
, int, Checkedstr_email_addr
,varchar(100),未選中date_registration
,日期,未勾選
str_member_no
, varchar(6), Uncheckedstr_member_name
, varchar(50), Uncheckedstr_member_password
, varchar(10), Uncheckedstr_addr_apartment_no
, varchar(10), Checkedstr_addr_building_name
, varchar(50), Checkedstr_addr_street_name
, varchar(50), Checkedint_postal_code
, int, Checkedstr_country_name
, varchar(50), Checkedint_contact_no
, int, Checkedstr_email_addr
, varchar(100), Uncheckeddate_registration
, date, Unchecked
Unchecked
推薦答案
顯然,您的插入違反了檢查約束.這是您的數(shù)據(jù)庫中的一個約束,用于執(zhí)行特定檢查 - 數(shù)值是否在特定范圍內(nèi),字符串最多為 n 個字符,或其他任何內(nèi)容.
Obviously, your insert is violating a check constraint. This is a constraint in your database the performs a specific check - that a numeric value is in a particular range, that a string is at most n characters long, or whatever.
要了解檢查約束是什么,請嘗試以下操作:
To find out what the check constraint is, try this:
SELECT
name, definition
FROM
sys.check_constraints
WHERE
name = 'ck_str_member_no'
這將為您提供正在定義"列中檢查的表達(dá)式.
This will give you the expression that is being checked in the "definition" column.
從該表達(dá)式中,您應(yīng)該能夠確定插入被拒絕的原因.解決問題并重新插入.
From that expression, you should be able to determine why your insert is being rejected. Fix the problem and insert again.
如果您確實(shí)無法修復(fù)您的數(shù)據(jù),并且如果您不需要/不希望該檢查約束到位,則可以刪除它:
If you really cannot fix your data, and if you do not need / want that check constraint in place, you can drop it:
ALTER TABLE dbo.Members
DROP CONSTRAINT ck_str_member_no
馬克
這篇關(guān)于Sql 服務(wù)器錯誤:INSERT 語句與 CHECK 約束沖突的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!