如何在不使用BEGIN-END的SQL-92环境中实现TSQL的NOT EXISTS逻辑?
SQL-92环境下无BEGIN-END实现条件插入的方案
直接把IF NOT EXISTS的判断逻辑整合到INSERT的SELECT查询里就行,利用SQL-92支持的EXISTS子句来过滤,不需要任何BEGIN-END块就能实现相同效果:
INSERT INTO tblDCUSTOM (ID ,Name ,English ) SELECT 'All Customers','All Customers','All Customers' WHERE NOT EXISTS (SELECT * FROM tblDCUSTOM WHERE id = 'All Customers')
原理说明
当tblDCUSTOM中不存在id = 'All Customers'的记录时,WHERE NOT EXISTS的条件成立,SELECT语句会返回要插入的那一行数据,INSERT就会执行插入操作;如果该记录已经存在,SELECT返回空结果集,INSERT就不会做任何操作,完全等价于原来TSQL的逻辑。
内容的提问来源于stack exchange,提问作者Lukáš Tomšů
相关产品推荐
相关产品推荐

