2016-04-25 48 views
0

我想更新或在具有普通SQL(而不是MySQL)的表中創建新條目。 我的表中的列:T_ID,迭代,COMMENT更新或以其他方式在表中創建條目

我知道,我可以更新我的表:

UPDATE TABLE 
    SET ITERATION = ITERATION + 1 
    WHERE T_ID = 1; 

但是,如果與T_ID沒有進入= 1存在我想創建一個迭代的條目= 1和T_ID = 1,因爲沒有評論。

這是可能的通過使用正常的SQL語句?

+0

它可以在存儲過程中實現 –

+0

您需要一個合併子句。 https://msdn.microsoft.com/en-in/library/bb510625.aspx –

+0

但這是可能的通過使用正常的SQL語句?我寧願不使用PL/SQL或類似的東西。 – Puddle

回答

0

這是可以通過使用普通的SQL語句?

否 - 在一個語句中沒有「標準」SQL結構用於「upsert」(或Merge)。不同的SQL系統已經實現了執行「更新(如果存在)」操作的機制,例如MySQL的ON DUPLICATE KEY UPDATE或Oracle和SQL Server的MERGE語法,但「標準」SQL中沒有任何操作。

0

你會想在存儲過程中做到這一點。像這樣的東西,你要檢查T_ID = 1是否存在任何東西。然後根據這個結論,你可以更新或插入。

BEGIN TRAN 
IF EXISTS (SELECT * FROM table WHERE T_ID = 1) 
BEGIN 
    UPDATE table SET ITERATION = ITERATION + 1 WHERE T_ID = 1 
END 
ELSE 
BEGIN 
    INSERT INTO table (T_ID, ITERATION, COMMENT) 
    VALUES (1, 1, '') 
END 
COMMIT TRAN 
相關問題