線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1293
推到 Plurk!
推到 Facebook!

经典难题:如何编辑外键?

缺席
e271828
一般會員


發表:9
回覆:8
積分:3
註冊:2007-06-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-12 15:22:34 IP:218.19.xxx.xxx 未訂閱
经典难题:如何编辑外键?
设有A,B两表,B中有AID字段与A表的ID关联,但AB不是主从表,是一对一的关系。
如果仅为浏览,可以用INNER JOIN来关联,但是要增删改B表时,要看下A表中其它字段时有什么方法?
方法一是用LOOKUP字段,但这样要下载整个A表下来再查,可能太慢,有无好的方法?而且LOOKUP字段似乎不常用似的。
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-13 00:56:26 IP:211.22.xxx.xxx 未訂閱
1.資料庫講究的是正規化,正規化後才會有所謂的關連性資料庫,我不知道你為何要在一個DATABASE裡面放兩個一樣的TABLE,且彼此之間是一對一,又沒有主從關係,那不是多餘了嗎?
2.比較兩個表的差異,請使用LEFT OUTER JOIN.
===================引 用 e271828 文 章===================
经典难题:如何编辑外键?
设有A,B两表,B中有AID字段与A表的ID关联,但AB不是主从表,是一对一的关系。
如果仅为浏览,可以用INNER JOIN来关联,但是要增删改B表时,要看下A表中其它字段时有什么方法?
方法一是用LOOKUP字段,但这样要下载整个A表下来再查,可能太慢,有无好的方法?而且LOOKUP字段似乎不常用似的。
e271828
一般會員


發表:9
回覆:8
積分:3
註冊:2007-06-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-13 13:26:41 IP:218.19.xxx.xxx 未訂閱
对于SQLSERVER2000,用触发器确实搞踮了!!!
但是对于ACCESS2000,还未有!!!
CREATE TRIGGER [asas] ON [dbo].[bbb]
INSTEAD OF INSERT
AS
select * ,0 as ifs into #www from inserted
update #www set #www.ifs=1 where #www.id in (select id from bbb)
if exists(select * from #www where #www.ifs=0)
insert into bbb select * from inserted where inserted.id in (select id from #www where #www.ifs=0)
drop table #www
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-06-13 17:50:25 IP:61.30.xxx.xxx 訂閱
e271828您好:
您的問題~既然不能下TIGGER 那就在程式裡面,再加一段EVENT在觸發B表異動的時候,一並異動A表~
因為沒有DELPHI提供的元件,可以直接異動二個表!!

===================引 用 e271828 文 章===================
对于SQLSERVER2000,用触发器确实搞踮了!!!
但是对于ACCESS2000,还未有!!!
CREATE?TRIGGER?[asas]?ON?[dbo].[bbb]?
INSTEAD?OF??INSERT
AS
select?*?,0?as?ifs??into?#www?from?inserted
update?#www?set?#www.ifs=1?where?#www.id?in?(select?id?from?bbb)
if?exists(select?*?from?#www??where?#www.ifs=0)
insert?into??bbb??select?*?from?inserted??where?inserted.id?in?(select?id?from?#www??where?#www.ifs=0)
drop?table?#www
------
======================
昏睡~
不昏睡~
不由昏睡~
編輯記錄
ko 重新編輯於 2007-06-13 17:52:06, 註解 無‧
e271828
一般會員


發表:9
回覆:8
積分:3
註冊:2007-06-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-06-13 18:20:33 IP:218.19.xxx.xxx 未訂閱
老兄还未明我的意思,我是想用JOIN联合两表查询时,但只想更新一个表,不是想更新两个表,越讲越离谱了
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-06-13 19:52:12 IP:211.72.xxx.xxx 訂閱
BDE Base 之 TQuery 有 TUpdateSQL 可寫 Insert, Update, Delete 之 SQL 指令, 若只想更新一個 Table, 應符合您的需要.
但 TADOQuery 便沒辦法.
若要同時更新兩個 Table, 則須用 Trigger 或 StoredProcedure 才可能辦到.
===================引 用 e271828 文 章===================
老兄还未明我的意思,我是想用JOIN联合两表查询时,但只想更新一个表,不是想更新两个表,越讲越离谱了
編輯記錄
herbert2 重新編輯於 2007-06-13 19:53:14, 註解 無‧
系統時間:2024-05-19 11:04:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!