嘗試分別插入兩行。我敢打賭,至少有一次失敗,但不一定都是。失敗不是來自僅在插入語句中找到的數據,除非您在各個列上同時具有複合主鍵/唯一約束和另一個唯一約束。
你也可以解釋你有兩個主鍵一起形成一個複合鍵嗎?一個表只能有一個主鍵。你可以編寫表格定義的腳本(右鍵單擊SSMS中的對象瀏覽器,Script Table As,Create To,Clipboard),並將其添加到問題中,這樣我們可以就術語達成一致?
如果你有P_ID唯一約束和Sub_ID唯一約束,那麼你只能有一個表中的每個價值,反對什麼,我想你打算(只組合必須是唯一的)。如果您對各個列唯一約束,那麼這是不是有效,因爲它不違反合併約束,但它確實違反了第一列的約束:
P_ID Sub_ID
---- ------
0706 002
0706 003
我們可以告訴您如何解決這(並確認還沒有一行P_ID ='0706'和Sub_ID ='002'或'003')。當你這樣說時會發生什麼:
SELECT COUNT(*) FROM dbo.tbl_AllParcel WHERE P_ID = '0706' AND Sub_ID = '002';
?或者更重要的是,我想,根據您提供的腳本:
SELECT COUNT(*) FROM dbo.tbl_AllParcel WHERE P_ID = '0706';
SELECT COUNT(*) FROM dbo.tbl_AllParcel WHERE Sub_ID = '002';
爲了創建無添加鍵單獨列複合鍵,你不選擇單獨的列。這裏是一個辦法做到這一點使用CREATE TABLE
:我假設你正在使用中的UI
CREATE TABLE dbo.tbl_AllParcel2
(
P_Id CHAR(4),
Sub_Id CHAR(3),
... other columns,
CONSTRAINT PK_Parcel PRIMARY KEY(P_Id, Sub_Id)
);
。不要在桌子設計師那裏嘗試這樣做 - 這是一大堆垃圾。學習DDL,它會讓你走得更遠。下面是CREATE TABLE
和ALTER TABLE
主題聯機叢書,其中有大量的例子來定義各種限制和其他表屬性:
CREATE TABLE (MSDN)
ALTER TABLE (MSDN)
所以可以在SQL Server 2008創建執行沒有獨特的個體組合鍵鍵?;我想要在 – 2012-04-24 21:05:49