SQL SQLite 的服务器脚本
SQL Server script for SQLite
我需要为 SQL 服务器转换脚本,以便我可以将它们用于 SQLite。
脚本如下所示:
DECLARE @var1 int = (SELECT Id FROM Table1 WHERE id = 'val1')
DECLARE @var2 int = (SELECT Id FROM Table2 WHERE id = 'val2')
IF NOT EXISTS(SELECT * FROM Table3 WHERE id_1 = @var1 and id_2 = @var2)
INSERT INTO Table3(id_1, id_2) VALUES (@var1, @var2)
GO
IF NOT EXISTS(SELECT * FROM Table4 WHERE id ='val3')
INSERT INTO Table4(id, desc) values ('111', 'new entry')
GO
在 SQLite 中执行这些脚本的最佳做法是什么?
SQLite 不支持变量。
您可以使用 returns 将 2 个变量的值作为列的 CTE:
WITH cte(var1, var2) AS (
SELECT (SELECT Id FROM Table1 WHERE id = 'val1'), (SELECT Id FROM Table2 WHERE id = 'val2')
)
INSERT INTO Table3(id_1, id_2)
SELECT var1, var2
FROM cte
WHERE NOT EXISTS (SELECT * FROM Table3 t3 INNER JOIN cte c ON t3.id_1 = c.var1 AND t3.id_2 = c.var2);
INSERT INTO Table4(id, `desc`)
SELECT '111', 'new entry'
WHERE NOT EXISTS (SELECT * FROM Table4 WHERE id ='val3')
我需要为 SQL 服务器转换脚本,以便我可以将它们用于 SQLite。
脚本如下所示:
DECLARE @var1 int = (SELECT Id FROM Table1 WHERE id = 'val1')
DECLARE @var2 int = (SELECT Id FROM Table2 WHERE id = 'val2')
IF NOT EXISTS(SELECT * FROM Table3 WHERE id_1 = @var1 and id_2 = @var2)
INSERT INTO Table3(id_1, id_2) VALUES (@var1, @var2)
GO
IF NOT EXISTS(SELECT * FROM Table4 WHERE id ='val3')
INSERT INTO Table4(id, desc) values ('111', 'new entry')
GO
在 SQLite 中执行这些脚本的最佳做法是什么?
SQLite 不支持变量。
您可以使用 returns 将 2 个变量的值作为列的 CTE:
WITH cte(var1, var2) AS (
SELECT (SELECT Id FROM Table1 WHERE id = 'val1'), (SELECT Id FROM Table2 WHERE id = 'val2')
)
INSERT INTO Table3(id_1, id_2)
SELECT var1, var2
FROM cte
WHERE NOT EXISTS (SELECT * FROM Table3 t3 INNER JOIN cte c ON t3.id_1 = c.var1 AND t3.id_2 = c.var2);
INSERT INTO Table4(id, `desc`)
SELECT '111', 'new entry'
WHERE NOT EXISTS (SELECT * FROM Table4 WHERE id ='val3')