2013-01-21 85 views
1

我有2個不同的表:如何讓字符串自動增量

表1

ID 
AK001 
AK001 
AK001 

(上面應該是AK001,AK002,AK003等....)

表2

LastNum 
1 

表1:更新table1設置ID = xx + RIGHT('....'+())等等

表2:更新table2 SET LastNum = LastNum + 1(這個工作,但是當我輸入錯誤的細節當在創建新的形式,尚未保存,它也給我+1)

我的問題是如何自動遞增,並在表1更新後表2已更新?因爲我所面臨的是table1,當table2更新時,請給我一個相同的數字。請幫忙!

+1

這可能是有用的http://stackoverflow.com/questions/3455557/mysql-how-to-use-varchar-as-auto-increment-primary-key – DON

+1

很多RDBMS你使用MS SQL Server(版本?),MySQL,Postgre,Oracle? – Yaroslav

+0

@Yaroslav我正在使用sql服務器管理工​​作室 – Bella

回答

1

假設表1應始終與對應於所述LastNum字段表2中,聽起來像Trigger將是最有效的XXX結束。

是否使用的是RDBMS?

如果MySQL:

CREATE TRIGGER myTrigger BEFORE INSERT ON Table2 
    FOR EACH ROW BEGIN 
    //Here you should use NEW.Lastnum to UPDATE your Table1 
    // update table1 set ID = xx + RIGHT('....'+()) 
    END; 

SQL服務器:

CREATE TRIGGER myTrigger 
ON Table2 
AFTER INSERT 
AS 
    //Here you should use INSERTED table (Lastnum column) to UPDATE your Table1 
    // update table1 set ID = xx + RIGHT('....'+()) 
GO 

你應該能夠查找是RDBMS特定的其他語法。

祝你好運。

+0

感謝您的回覆,即時通訊使用SQL服務器管理工​​作室 – Bella

+0

只需發佈類似的語法 - 讓我知道如果你有麻煩,很容易寫。祝你好運。 – sgeddes

+0

izzit觸發器是否與更新表1混合? – Bella

2

你應該考慮使用INT作爲主鍵而不是varchar。然後使用該字段作爲外鍵。

這是爲什麼不使用VARCHAR爲任何類型的鍵的detailed answer

保持存儲YOUT商店ID爲varchar,只需添加新的領域這兩個表,主一個確保是IDENTITY,它會自動遞增。

有關於using VARCHAR as primary key問題的許多意見。您應仔細分析您嘗試解決的問題。當然,也許你不能改變任何事情,只能用已有的東西來工作。在這種情況下,您需要使用@sgeddes建議的一些解決方法作爲觸發器。

+0

如果使用INT,我不能存儲ID字符串 – Bella

+5

@Bella:如果**所有**行都有'AK'前綴,則不需要存儲它。 –

+0

爲澄清而編輯的答案 – Yaroslav