主鍵重複插入

來源:互聯網
上載者:User
 

PRIMARY KEY 違反、制約 'PK_T2': オブジェクト 'T2' には重複したキーは挿入できません。/r/nステートメントは終了されました。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

分析:上述問題是說往表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");

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.