2011-09-29 150 views
0

我有兩個sql表,分別叫scan_screscan_rsc。掃描表如下所示:SQL觸發器,插入語句

CREATE TABLE scan_sc 
( 
    id_sc int(4), 
    Type_sc varchar(255), 
    ReScan_sc varchar(255), 
    PRIMARY KEY (id_sc) 
) 

當掃描文檔時,我在掃描表中插入一行。如果掃描結果很差,我必須重新掃描,因此我有一個重新掃描表。

CREATE TABLE rescan_rsc 
(
    id_rsc int(4), 
    Scan_rsc varchar(255), 
    PRIMARY KEY (id_rsc) 
) 

的問題是,我想有一個觸發器,它們將在列ReScannet_sc填充的"x",在scan_sc表,這樣我就可以看到,一直在這裏的一些問題。

觸發器必須在重掃描表的ID與掃描表中的ID相同的情況下執行此操作。

希望你們都明白我的問題。

在此先感謝。

+2

您正在使用哪些DBMS? –

+4

**什麼**數據庫和哪個版本?? ** SQL **只是結構化查詢語言 - 許多**數據庫系統使用的語言 - ** SQL **是** NOT **數據庫產品......這類東西通常是**供應商 - 特定的** - 所以我們真的需要知道你正在使用的數據庫系統**。 –

+1

Neiter你的scan_sc或你的'rescan_rsc'表都有一個名爲'id_sd'的列,但這是主鍵對彼此而言??其中一個mysql數據庫 –

回答

1

你真的需要ReScan_sc列和觸發器嗎?

使用簡單的JOIN,您可以找到scan_sc表中已重新掃描的記錄,根本不使用ReScan_sc列。
有幾種可能性:

顯示所有掃描,與重新掃描ID的附加列,如果有的話:

SELECT scan_sc.*, rescan_sc.id_rsc 
FROM scan_sc 
LEFT JOIN rescan_sc ON scan_sc.id_sc = rescan_sc.id_rsc 

只顯示已重新掃描的掃描:

SELECT scan_sc.* 
FROM scan_sc 
INNER JOIN rescan_sc ON scan_sc.id_sc = rescan_sc.id_rsc 

(我認爲id_scid_rsc是主鍵,而PRIMARY KEY (id_sd)是一個錯字,就像在他的評論中指出的marc_s)

+0

然後我沒有tabel,用戶可以鍵入重新掃描的文檔,如果我理解您的解決方案正確。 – Thomas

+0

你仍然有兩個表。 'rescan_sc'表將保持原樣,只有'scan_sc'表中的'Rescan_sc'列將不再需要(而且根本不需要觸發器)。 –

+0

你不**有**這樣做,這只是一個替代的建議。如果你願意的話,你仍然可以用觸發器來做到這一點(但之後我無法幫助你,因爲我不知道如何在MySQL中編寫觸發器)。 –