2017-07-11 59 views
0

如果我有兩列電話號碼,電話和地址在表電話中,其中電話號碼是id列。現在我有要求用當前時間更新手機列(以當前時間的4位數字)+添加現有的手機值;如果電話列發生變化,地址值也會變化,因爲地址的4位數字是電話。這個怎麼做 ??如何使用第一列的值更新其中第二列將被更新的一個表中的兩列?

Phoneid Phone Address 
1  123 123newdelhi10091 

更新

Phoneid Phone    Address 
1  (123+4467)4590 4590newdelhi110091 
+0

你是什麼_expected_結果呢?你有什麼嘗試?什麼都沒有奏效? – GrumpyCrouton

+0

它不是一個聰明的主意,以一個4位數字的時間添加到一個電話號碼,是嗎? –

回答

0

通常情況下,這種類型的行爲將被認爲是業務邏輯之後,所以它會在任何程序連接到數據庫來完成。如果這不是一種選擇,那麼有幾種方法可以解決。

首先,你可以創建一個觸發器,它基本上會自動改變一個值時,其他的變化:

DELIMITER // 
CREATE TRIGGER phone_update BEFORE UPDATE ON phone 
FOR EACH ROW 
    BEGIN 
     SET NEW.Address = CONCAT(NEW.Phone, SUBSTRING(OLD.Address, LENGTH(Old.Phone); 
    END;// 

觸發器常被反直覺的,難以調試。另外,未來的開發者可能不會期望觸發器。如果我能幫上忙,我一般不會是粉絲。

你等是使用一個觀點:

CREATE VIEW phone_address_view AS (
    SELECT phoneid, phone, CONCAT(phone, address) as `address` FROM phone 
); 

視圖的好處是,你將永遠有一致的數據。您可以將實際地址插入數據庫,然後在查詢時您會收到修改的信息。

在另一方面,你現在從不同的地方比你插入和UPDATEing選擇。視圖的聲譽也比原始錶慢。

相關問題