替换SQL-92中的TSQL NOT EXISTS



我有以下代码在TSQL中运行良好:

BEGIN 
IF NOT EXISTS (select * from tblDCUSTOM where id = 'All Customers')
BEGIN
INSERT INTO tblDCUSTOM
(ID
,Name
,English     
)
SELECT 'All Customers','All Customers','All Customers'
END
END

现在,我需要在使用SQL-92的自定义环境中拥有此功能,因此不可能有EXISTS(编辑:不正确,EXISTS在SQL-92中工作(或BEGIN-END。有什么想法吗?

根据第一条注释;

INSERT INTO tblDCUSTOM
(ID
,Name
,English     
)
SELECT 'All Customers','All Customers','All Customers'
WHERE (SELECT COUNT(*) FROM tblDCUSTOM where id = 'All Customers') >= 1

如果支持TOP,这可能是更好的

INSERT INTO tblDCUSTOM
(ID
,Name
,English     
)
SELECT 'All Customers','All Customers','All Customers'
WHERE (SELECT TOP 1 1 as F FROM tblDCUSTOM where id = 'All Customers') IS NOT NULL

我必须警告你,许多人试图建立一个"数据库不可知"的系统。这不值得。

这是正确的答案,实际上支持EXISTS语句:

将条件放入WHERE:INSERT。。。选择。。。其中不存在(…(。这可以说是更好的做法,即使在T-SQL中原子操作。

最新更新