主键重复插入

来源:互联网 发布:广联达软件开发怎么样 编辑:程序博客网 时间:2024/05/18 11:47
 

PRIMARY KEY 違反、制約 'PK_T2': オブジェクト 'T2' には重複したキーは挿入できません。/r/nステートメントは終了されました。

分析:上述问题往表T2行插入候,主插入。因一个表可能有1个或多个主,但是不有几个,数据中的表而言都要唯一。

首先建立一个学生表,SNO

CREATE TABLE Student_Info

(

              SNO INT CONSTRAINT S1 PRIMARY KEY,

              SNAME CHAR(6) CONSTRAINT S2 NOT NULL,

              SEX CHAR(2) CONSTRAINT S3 CHECK(SEX IN ('0','1')),

              BIRTHDAY DATETIME

)

表中插入3条数据

INSERT INTO Student_Info

SELECT 1,'TOM','1','1983/04/15'

UNION ALL

SELECT 2,'HERRY','0','1983/04/16'

UNION ALL

SELECT 3,'JIM','1','2008/10/17'

如果我使用常用到的SQL 来再一次把 姓名是TOM条信息插入一次。

   Insert Into Student_Info (SNO,SNAME,SEX,BIRTHDAY)

   Values( 1,'TOM','1','1983/04/15')

就会出上述所错误。即主不能重插入。

下面我不用第三SQL 而是利用程序代形式以DataSet方式在DataSet表中添加一行,同把新添的赋值为上述TOM信息,然后利用Update 方法更新回数据。看看会如何呢?

string strConn="Data Source=.;Initial Catalog=Test;User ID=sa;Password=";

SqlConnection conn=new SqlConnection (strConn);

SqlCommand cmd=new SqlCommand ("select * from Student_Info", conn);

SqlDataAdapter sda = new SqlDataAdapter(cmd);

//生成用于数据集更新的命令

SqlCommandBuilder cb=new SqlCommandBuilder(sda);

//填充数据集

DataSet public_ds =new DataSet();

sda.Fill (public_ds,"Student_Info");

//修改数据集TOM信息再次插入

DataRow drRow = public_ds.Tables[0].NewRow();

drRow["SNO"]=1;

drRow["SNAME"]="TOM";

drRow["SEX"]="1";

drRow["BIRTHDAY"]="1983/04/15";

public_ds.Tables[0].Rows .Add(drRow);

//用更改后的数据集更新数据

sda.Update(public_ds,"Student_Info");

原创粉丝点击