在 table 中更新或以其他方式创建条目
Update or otherwise create an entry in table
我想用正常的 SQL(不是 MySQL)在 table 中更新或创建一个新条目。
我的 table 有列:T_ID、ITERATION、COMMENT
我知道我可以更新我的table:
UPDATE TABLE
SET ITERATION = ITERATION + 1
WHERE T_ID = 1;
但是如果不存在 T_ID = 1 的条目,我想创建一个 ITERATION = 1 和 T_ID = 1 的条目,并且作为 COMMENT nothing.
这可以通过使用普通的 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
Is this possible by using a normal SQL statement?
否 - 在一个语句中没有 "standard" SQL 结构用于 "upsert"(或 Merge)。不同的 SQL 系统已经实现了执行 "update if exists" 操作的机制,例如 MySQL 的 ON DUPLICATE KEY UPDATE
或 Oracle 和 SQL Server 的 MERGE
语法,但 "standard" SQL.
中什么也没有
我想用正常的 SQL(不是 MySQL)在 table 中更新或创建一个新条目。 我的 table 有列:T_ID、ITERATION、COMMENT
我知道我可以更新我的table:
UPDATE TABLE
SET ITERATION = ITERATION + 1
WHERE T_ID = 1;
但是如果不存在 T_ID = 1 的条目,我想创建一个 ITERATION = 1 和 T_ID = 1 的条目,并且作为 COMMENT nothing.
这可以通过使用普通的 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
Is this possible by using a normal SQL statement?
否 - 在一个语句中没有 "standard" SQL 结构用于 "upsert"(或 Merge)。不同的 SQL 系统已经实现了执行 "update if exists" 操作的机制,例如 MySQL 的 ON DUPLICATE KEY UPDATE
或 Oracle 和 SQL Server 的 MERGE
语法,但 "standard" SQL.