我想更新或在具有普通SQL(而不是MySQL)的表中創建新條目。 我的表中的列:T_ID,迭代,COMMENT更新或以其他方式在表中創建條目
我知道,我可以更新我的表:
UPDATE TABLE
SET ITERATION = ITERATION + 1
WHERE T_ID = 1;
但是,如果與T_ID沒有進入= 1存在我想創建一個迭代的條目= 1和T_ID = 1,因爲沒有評論。
這是可能的通過使用正常的SQL語句?
我想更新或在具有普通SQL(而不是MySQL)的表中創建新條目。 我的表中的列:T_ID,迭代,COMMENT更新或以其他方式在表中創建條目
我知道,我可以更新我的表:
UPDATE TABLE
SET ITERATION = ITERATION + 1
WHERE T_ID = 1;
但是,如果與T_ID沒有進入= 1存在我想創建一個迭代的條目= 1和T_ID = 1,因爲沒有評論。
這是可能的通過使用正常的SQL語句?
這是可以通過使用普通的SQL語句?
否 - 在一個語句中沒有「標準」SQL結構用於「upsert」(或Merge)。不同的SQL系統已經實現了執行「更新(如果存在)」操作的機制,例如MySQL的ON DUPLICATE KEY UPDATE
或Oracle和SQL Server的MERGE
語法,但「標準」SQL中沒有任何操作。
你會想在存儲過程中做到這一點。像這樣的東西,你要檢查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
它可以在存儲過程中實現 –
您需要一個合併子句。 https://msdn.microsoft.com/en-in/library/bb510625.aspx –
但這是可能的通過使用正常的SQL語句?我寧願不使用PL/SQL或類似的東西。 – Puddle