外鍵是用來(lái)實(shí)現(xiàn)“引用完整性”的,說(shuō)白了就是一種約束,不能用來(lái)傳值。

成都創(chuàng)新互聯(lián)公司專注于烏翠企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城系統(tǒng)網(wǎng)站開(kāi)發(fā)。烏翠網(wǎng)站建設(shè)公司,為烏翠等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
可以選擇觸發(fā)器或存儲(chǔ)過(guò)程。
如果兩個(gè)表字段相同可以用觸發(fā)器:
CREATE TRIGGER trigger_AToB on A
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO A(a,b,c) SELECT a,b,c FROM inserted
INSERT INTO B(a,b,c) SELECT a,b,c FROM inserted
END
GO
INSERT INTO a(a,b,c)VALUES('aaa','aaa','aaa')
在查詢分析器里執(zhí)行上面的語(yǔ)句后,向A表添加數(shù)據(jù)會(huì)同時(shí)向B表添加。觸發(fā)器比較方便,缺點(diǎn)是,一旦B表被刪除了,向A表添加數(shù)據(jù)會(huì)報(bào)錯(cuò)。
存儲(chǔ)過(guò)程就比較自由了:
CREATE PROC proc_InsertAToB
@a VARCHAR(10),
@b VARCHAR(20),
@c VARCHAR(30)
as
INSERT INTO A(a,b,c)VALUES(@a,@b,@c)
INSERT INTO B(a,b,c)VALUES(@a,@b,@c)
表B的字段和表A不一樣也沒(méi)關(guān)系,需要的話,可以再根據(jù)需要向存儲(chǔ)過(guò)程添加參數(shù)。
使用的時(shí)候不再用INSERT INTO了,用:
EXECUTE proc_InsertAToB 'aaa','aaa','aaa'就可以。
給你做個(gè)簡(jiǎn)單試驗(yàn)吧
創(chuàng)建class表,里邊其他字段我就略了
create?table?class(classid?int?not?null?primary?key,
classname?varchar(20))
創(chuàng)建學(xué)生表
create?table?student(studentid?int?not?null?primary?key,
studentname?varchar(10),
classid?int)
添加外鍵級(jí)聯(lián)刪除或更新約束
alter?table?student?add?constraint?FK_classid?foreign?key?(classid)?references?class?(classid)?on?update?cascade?on?delete?cascade
向class表增加數(shù)據(jù)
insert?into?class?values?(1,'1班')
insert?into?class?values?(2,'2班')
向student表增加數(shù)據(jù)
insert?into?student?values?(1,'aa',1)
insert?into?student?values?(2,'bb',2)
insert?into?student?values?(3,'cc',3)?--這條是增加不進(jìn)去的,會(huì)報(bào)錯(cuò)
刪除class表里一班的數(shù)據(jù)
delete?from?class?where?classid=1
檢查 student 表里數(shù)據(jù)
這個(gè)時(shí)候你就發(fā)現(xiàn),為1班學(xué)生的那數(shù)據(jù)也同時(shí)被刪了
如果你用的是SQL2008以后的數(shù)據(jù)庫(kù)版本,可以這樣
SELECT ROW_NUMBER() OVER (ORDER BY B.HID DESC) BH, B.*
FROM
(SELECT h.[醫(yī)院名稱],k.[科室名稱],k.[科室編號(hào)],k.id,k.kid
from [醫(yī)院表] as h right join [科室表] as k on k.hid = h.hid
) B
WHERE BH BETWEEN ($page_size * $page_num) AND ($page_size * $page_num +$page_size)
declare @i int
declare @sql nvarchar(max)
set @i=0
set @sql=''
while @i=288
begin
set @sql=@sql+'select ''13207000101001'' site_code,name,dateadd(mi,' + cast((@i+1)*5 as nvarchar(50))+',[datetime]) test_date,col'+ cast(@i as nvarchar(50))+' test_value from 表A where col'+cast(@i as nvarchar(50))+' '''' union all '
set @i=@i+1
end
set @sql=substring(@sql,1,len(@sql)-10)
set @sql='select * into 表B from ('+ @sql+') a'
exec(@sql)
當(dāng)前題目:sqlserver兩表,sqlserver兩表相似80%內(nèi)容
網(wǎng)站網(wǎng)址:http://chinadenli.net/article18/dsshidp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、品牌網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站制作、網(wǎng)站制作、微信小程序、域名注冊(cè)
聲明:本網(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)