當前位置:首頁 » 編程語言 » sqlserver復合主鍵
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlserver復合主鍵

發布時間: 2022-08-20 16:28:53

㈠ 怎樣在sql SERVER設置雙主鍵或多個主鍵

首先一個表是不能有兩個主鍵的。但是可以有兩個欄位組合成一個主鍵,這就是為什麼有時候表裡為什麼會有兩個欄位都有主鍵的標志,那是因為他們組合成了一個主鍵了。我們可以先刪除了原來的主鍵再用類似下面SQL語句建立:

alter table 你的表名 add constraint pk_name primary key (欄位1,欄位2);

或者在表設計器裡面按住ctrl選中要設置主鍵的兩列再設置主鍵就OK了.

㈡ SqlServer t-sql 主鍵定義問題

復合主鍵不能直接加在建表的列後面的
create table test
(a int ,
b int ,
c int
)
CONSTRAINT PK_test primary key
(a,b) on primary

㈢ 請問SQLserver中的主鍵和外鍵的作用

主鍵是對表的約束,保證數據的唯一性!
外鍵是建立表於表之間的聯系,方便程序的編寫!!

㈣ 如何在sqlserver資料庫表中建立復合主鍵

方法一:創建表之後,alter table table_name add primary key(欄位1,欄位2)
方法二:CREATE TABLE 表名 (欄位名1 Int Not Null, 欄位名2 nvarchar(13) Not Null 欄位名3………… 欄位名N…………) GO ALTER TABLE 表名 WITH NOCHECK ADD CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED ( [欄位名1], [欄位名2] ) GO

方法三:建表後,右鍵-->設計,選中作為符合主鍵的列,選中之後右擊-->設為主鍵

㈤ 數據表sqlserver,復合主鍵,一個主鍵是姓名,一個主鍵是id,如果姓名重復會不會出錯

不會出錯,既然是復合主鍵,保存的時候會比較以前的主鍵,只有姓名和id完全相同才認為主鍵重復

㈥ SQL Server 怎麼建立聯合主鍵

建立聯合主鍵有兩種方式:

一種是在建表時就寫出,語句如下:

Create Table 表名 (欄位名1 Int Not Null,

欄位名2 nvarchar(13) Not Null Primary Key (欄位名1, 欄位名2),

欄位名3…………

欄位名N………… )

另一種是在建表後更改,語句如下:

alter table 你的表名 add constraint pk_你的表名 primary key (欄位1,欄位2)

ALTER TABLE 表名 WITH NOCHECK ADD

CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED

(

[欄位名1],

[欄位名2]

)

創建聯合主鍵還可以這樣寫:

create table huayunkeji_today(device_id int , year int, month int, day int, hour int, temperature float, humidity float,

primary key(device_id,year,month,day,hour));

(6)sqlserver復合主鍵擴展閱讀:

聯合主鍵的使用情況及優點:

聯合主鍵就是用2個或2個以上的欄位組成主鍵。用這個主鍵包含的欄位作為主鍵,這個組合在數據表中是唯一,且加了主鍵索引。

可以這么理解,比如,你的訂單表裡有很多欄位,一般情況只要有個訂單號bill_no做主鍵就可以了,但是,現在要求可能會有補充訂單,使用相同的訂單號,那麼這時單獨使用訂單號就不可以了。

再使用個訂單序列號bill_seq來作為區別。把bill_no和bill_seq設成聯合主鍵。即使bill_no相同,bill_seq不同也是可以的。

㈦ 搞定了100分!兩個問題! sqlserver

可以把兩個欄位聯合起來設主鍵的
create table test
(
id int,
id2 int,
constraint PK_test_idid2 primary key (id, id2)
)
另外告訴你哦,給表添加約束有很多種語法的,直接在欄位定義後加primary key是最簡單的一種,他會建立一個由系統自動命名的主鍵約束。
如果要自己命名約束,完整的語法是:
id int constraint 約束名 primary key
如果要把多個欄位設為聯合主鍵,只要在primary key後面加個括弧,然後把欄位名都寫在裡面就可以了,比如:
id2 int constraint 約束名 primary key (id, id2)
還有一點,constraint 約束名 primary key (id, id2)這個子句可以跟在任何一個欄位後面,也可以在欄位定義完成後再單獨定義,偶覺得語法還是比較自由的哈哈~

至於你的第二個問題么~
偷懶方法:就是取出data1相同記錄中id最大和id最小的記錄,再用union all連接起來,再去掉重復記錄,排下序就OK了……可能有點不符合要求~
select distinct *
from (select min (id) as id,data1,data2
from test
group by data1,data2
union all
select max (id) as id,data1,data2
from test
group by data1,data2) as tmp
order by id

完美方法:你看吧,我不想說……這是參考欄位數不確定時,SQL交叉表的建立方法。頭都暈了……
declare @sql varchar(max)
set @sql = ''
select @sql = @sql + ' union all select top 2 * from test where data1 = ''' + data1 + ''''
from (select distinct data1 from test) as temp
set @sql = right(@sql, len(@sql) - 11)
exec (@sql)

㈧ sqlserver復合主鍵的問題,其中的一個鍵值是可以重復的,我想將只用這個鍵作為另一個表的外鍵,可有辦法

這個好像不行,做外鍵的話要求主鍵具有唯一約束,沒試過用復合主鍵做外鍵的

㈨ sqlserver里如何實現聯合主鍵及如下自增功能

不會,不過有些思路
提取你要輸入的A的值,判斷 select count(*) from TABLE where A=你輸入的值。
case1:如果查到的值是0,則B為1;
case2:如果查到的值不是0,查詢 select max(B)+1 from TABLE where A=你輸入的值 ,並將查詢到的值和A要輸入的值一起插入;
如果只是用資料庫實現的話帶參數的存儲結構應該能實現你這個要求,編程的話就更簡單了