比方說(shuō),你要?jiǎng)?chuàng)建一個(gè)表user_info,設(shè)置的主鍵名稱是user_id,那么可以如下設(shè)置:

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、網(wǎng)站空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、澤普網(wǎng)站維護(hù)、網(wǎng)站推廣。
create
table
user_info
(user_id
int
primary
key
identity(1,1),//主鍵初值為1,每次自增1,數(shù)值可變化,但要符合之前定義的類(lèi)型
user_name
varchar(20)
not
null,
....
)
希望能幫到你!~
插入一條記錄后想要立刻獲取其數(shù)據(jù)表中的sql server主鍵返回值。這個(gè)主鍵是自動(dòng)生成的,其實(shí)實(shí)現(xiàn)的方式有很多,比如再進(jìn)行一次查詢,獲取出來(lái)。或者在插入數(shù)據(jù)之前取出最大值,在最大值上面加一等等,方法很多,但是有些很不方便。
個(gè)人感覺(jué)最快的方式就是,在插入數(shù)據(jù)后直接獲取sql server主鍵的值,然后返回過(guò)來(lái)。
方法如下:
sql語(yǔ)句如下:
INSERT INTO tableName (fieldname ...) values (value ...) SELECT @@IDENTITY AS returnName;
在sql語(yǔ)句中加入SELECT @@IDENTITY AS returnName;用來(lái)獲取sql server主鍵的值
在程序中獲取返回值:
public int sqlexecutereader(string sql) { DBopen(); SqlCommand myComm = new SqlCommand(sql, Connection); int newID = Convert.ToInt32(myComm.ExecuteScalar()); DBclose(); return newID; }
當(dāng)然在此處主鍵是int類(lèi)型的自動(dòng)增加的。DBopen();DBclose();的操作在此就不多說(shuō)了。
1.
首先刪除主鍵,
然后重新創(chuàng)建主鍵,
重新創(chuàng)建主鍵的時(shí)候,
需要說(shuō)明本主鍵是使用
非聚集索引
primary
key
nonclustered
(
sno
)
2.
a:
pad_index
=
{
on
|
off
}
指定索引填充。默認(rèn)值為
off。
on
fillfactor
指定的可用空間百分比應(yīng)用于索引的中間級(jí)頁(yè)。
off
或不指定
fillfactor
考慮到中間級(jí)頁(yè)上的鍵集,將中間級(jí)頁(yè)填充到接近其容量的程度,以留出足夠的空間,使之至少能夠容納索引的最大的一行。
b:
fillfactor
=fillfactor
指定一個(gè)百分比,指示在創(chuàng)建或重新生成索引期間,數(shù)據(jù)庫(kù)引擎對(duì)各索引頁(yè)的葉級(jí)填充的程度。fillfactor
必須為介于
1
至
100
之間的整數(shù)值。默認(rèn)值為
0。如果
fillfactor
為
100
或
0,則數(shù)據(jù)庫(kù)引擎將創(chuàng)建完全填充葉級(jí)頁(yè)的索引。
c:
ignore_dup_key
=
{
on
|
off
}
指定在插入操作嘗試向唯一索引插入重復(fù)鍵值時(shí)的錯(cuò)誤響應(yīng)。ignore_dup_key
選項(xiàng)僅適用于創(chuàng)建或重新生成索引后發(fā)生的插入操作。當(dāng)執(zhí)行
create
index、alter
index
或
update
時(shí),該選項(xiàng)無(wú)效。默認(rèn)值為
off。
on
向唯一索引插入重復(fù)鍵值時(shí)將出現(xiàn)警告消息。只有違反唯一性約束的行才會(huì)失敗。
off
向唯一索引插入重復(fù)鍵值時(shí)將出現(xiàn)錯(cuò)誤消息。整個(gè)
insert
操作將被回滾。
d:
statistics_norecompute
=
{
on
|
off}
指定是否重新計(jì)算分發(fā)統(tǒng)計(jì)信息。默認(rèn)值為
off。
on
不會(huì)自動(dòng)重新計(jì)算過(guò)時(shí)的統(tǒng)計(jì)信息。
off
啟用統(tǒng)計(jì)信息自動(dòng)更新功能。
若要恢復(fù)統(tǒng)計(jì)信息自動(dòng)更新,請(qǐng)將
statistics_norecompute
設(shè)置為
off,或執(zhí)行
update
statistics
但不包含
norecompute
子句。
e:
on
[primary]
是指
索引創(chuàng)建在
primary
這個(gè)文件組上。
3、
以全國(guó)的身份證為例子:
對(duì)于
身份證號(hào)碼,
有個(gè)
“唯一”
的索引
而對(duì)于
姓名,
有個(gè)
“不唯一”
的索引。
“不唯一”
的索引
,
雖然不能定位到唯一的某一行,
但是可以縮小范圍。定位到某些行。
4.
聚集索引
clustered
創(chuàng)建索引時(shí),鍵值的邏輯順序決定表中對(duì)應(yīng)行的物理順序。聚集索引的底層(或稱葉級(jí)別)包含該表的實(shí)際數(shù)據(jù)行。一個(gè)表或視圖只允許同時(shí)有一個(gè)聚集索引。
如果每次要更新多行,那必須還要有一個(gè)唯一索引來(lái)定位要修改的記錄,比如為Col_Uq,那可以如下寫(xiě)觸發(fā)器:
create
trigger
tri_update_tb_1_pk
on
tb_1
for
update
as
if
not
update(col_pk)
return
update
tb_2
set
col_pk=i.col_pk
from
tb_2,inserted
i,deleted
d
where
tb_2.col_pk=d.col_pk
and
i.Col_Uq=d.Col_Uq
go
如果保證每次只更新一行,那可以如下寫(xiě)觸發(fā)器:
create
trigger
tri_update_tb_1_pk
on
tb_1
for
update
as
if
not
update(col_pk)
return
if
(select
count(*)
from
inserted)
1
return
update
tb_2
set
col_pk=i.col_pk
from
tb_2,inserted
i,deleted
d
where
tb_2.col_pk=d.col_pk
go
首先說(shuō)明一點(diǎn),主鍵又稱主鍵約束,它也是一種約束,看下它和唯一約束的創(chuàng)建語(yǔ)法:
alter
table
Person
add
constraint
PK_Id
primary
key
(Id)
alter
table
Person
add
constraint
UQ_Name
unique
(Name)
主鍵和唯一約束都要求字段值唯一,除此外,它們還有如下區(qū)別:
·同一張表只能有一個(gè)主鍵,但能有多個(gè)唯一約束;
·主鍵字段值不能為NULL,唯一約束字段值可以為NULL;
·主鍵字段可以做為其他表的外鍵,唯一約束字段不可以做為其他表的外鍵;
·SQLServer默認(rèn)為主鍵字段創(chuàng)建聚集索引,為唯一約束字段創(chuàng)建非聚集索引;
主鍵,唯一,但是不能為空;唯一約束,唯一,但是可以為空
創(chuàng)建表的時(shí)候可以 比如ID列自增
create table T1
(
id int identity(1,1),
ccode varchar(10),
cname varchar(100)
)
當(dāng)前文章:主鍵sqlserver,主鍵的作用
標(biāo)題網(wǎng)址:http://chinadenli.net/article27/dseeccj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站設(shè)計(jì)公司、搜索引擎優(yōu)化、商城網(wǎng)站、網(wǎng)站策劃、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)