2016-04-25 70 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 
相关问题