2010-09-22 75 views
0

好吧我有一個問題,它可能很容易,但我找不到解決方案。表關係,SQL 2005

我有3個表加上一個主要tbl。

tbl_1 - tbl_1Name_id 
tbl_2- tbl_2Name_id 
tbl_3 - tbl_3Name_id 

我想了名_ID字段連接到下方的主TBL領域。

main_tbl 
___________ 
tbl_1Name_id 
tbl_2Name_id 
tbl_3Name_id 

主tbl具有這些字段的唯一鍵,而在另一個表中,它們是普通字段的字段NOT NULL。

我想要做的是,當記錄輸入tbl_1,tbl_2或tbl_3時,主表中的值顯示在該字段中,或以其他方式顯示。 另外我也有多對一的關係,當然一個是主要的tbl。

我有一種感覺,這應該是非常簡單的,但不能得到它的工作。

回答

0

這裏是一個樣本觸發器,可以告訴你,你需要有啥子:

Create trigger mytabletrigger ON mytable 
For INSERT 
AS 

INSERT MYOTHERTABLE (MytableId, insertdate) 
select mytableid, getdate() from inserted 

在觸發你有兩個psuedotables可用,插入和刪除。插入的表格強制插入到您觸發的表格中的數據,包括任何自動生成的ID。假設您不需要同時使用其他數據,那麼您將數據傳輸到另一個表。 YOu可以從系統存儲的執行程序獲取其他數據,或者從其他表中獲取其他數據,但不能從應用程序的表單中獲取其他數據。

如果您確實需要觸發器中沒有的其他數據(例如表單中的其他值,則需要編寫一個sttored過程以插入到一個表中並通過輸出子句返回id值,或者使用scope_identity(),然後使用該數據爲下一個表構建插入。

+0

非常感謝,對於遲到的答覆感到抱歉,我會嘗試一下,如果你能知道這一點,我怎麼才能完全複製字段值(第一個表格)何時進入,進入另一個字段,第二個表格,它將是唯一的,因此我可以將它們鏈接在一起 – Tony 2010-09-26 15:40:45

1

看看SQL Server triggers。這將允許您在記錄插入任何一個表中時執行操作。

如果你提供像一些更多的信息:

  • 插入
  • 產生的變化的一個例子,你想 看到作爲一個結果插入

我可以試試並給你更多的細節。

UPDATE

基於新的意見,我懷疑你是一個非規範化的數據庫模式工作。下面是我建議你組織你討論的員工,就診情況下你的表:

Employee 
-------- 
EmployeeId 
fName 
lName 

EmployeeMedicalVisit 
-------------------- 
VisitId 
EmployeeId 
Date 
Cost 

一些重要的事情:

  1. 請注意,我沒有進入 員工命名爲 EmployeeMedicalVisit表,只是EmployeeId。這 有助於保持數據的完整性和 與First Normal Form
  2. 符合您應該1st2nd3rd正常形式讀了。 Database normalization是一個非常重要的 主題,它會讓你的生活 更容易,如果你能掌握它們。

有了上述結構,當員工訪問醫療辦公室時,您可以在EmployeeMedicalVisit中插入一條記錄。要選擇一個員工的所有醫療訪問,您可以使用下面的查詢:

SELECT e.fName, e.lName 
FROM Employee e 
INNER JOIN EmployeeMedicalVisit as emv 
ON e.EployeeId = emv.EmployeeId 

希望這有助於!

+0

謝謝安倍,我有一個主表,它有很多細節,並且會每天使用,所以我計劃的是當主表更新,它爲其他三個表創建一個ID,以便當tbl1,tbl2或tbl 3具有來自主tbl的所有詳細信息時,連接記錄... – Tony 2010-09-22 18:12:10

+0

好吧,只需添加,主tbl具有更多字段...像拳頭名,姓,地址,護照詳情等....加上字段tbl_1Name_id t bl_2Name_id tbl_3Name_id。在插入它的同時,我想用來自main的_id字段的相同值更新tbl1,tbl2和tbl3。主tbl字段有身份和增量。 – Tony 2010-09-22 18:44:42

+0

我真的需要一個用例添加到您的原始問題。就像示例插入SQL一樣,並且表更改它導致。 – 2010-09-22 18:53:59