更新或以其他方式在表中创建条目
问题描述:
我想更新或在具有普通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