INSERT语法使用技巧一例


在 SQL Server 在线图书(SSBOL)中,请定位sp_dbcmptlevel,然后找出描述6.0、6.5和7.0之间版本兼容性的数据表
。你可以注意到INSERT SQL语句有如下所示的语法。

INSERT X
SELECT select_list INTO Y

早期的 SQL Server 数据库 (6.0或者6.5版本)可以正确地解析这样的语句,但新的 SQL Server 数据库 (7.0 或者8.0版本)就不能正确解析了。虽然语法中的Y 在任何兼容级设置下都不用做插入操作的接收者,但旧的 数据库 还允许这样的语法存在。这种语法在新的 数据库 中都因其更严格的语法检查而无法执行,然而,这种"严格要求"却让用户编写的代码更具稳固性。

以下是一个可以在 SQL Server 7.0 或者2000上运行的简单脚本,该脚本说明了以上的语法如何通过旧 数据库 的测试但却不能通过新 数据库 的检查。

SET NOCOUNT OFF
GO
USE pubs
GO
IF EXISTS (SELECT * FROM sysobjects WHERE type =
'U' AND name = 'test')
BEGIN
DROP TABLE test
END
GO
CREATE TABLE test (col1 INT NULL, col2 INT NULL)
GO
EXEC sp_dbcmptlevel pubs, 65
GO
INSERT test
SELECT 1 ,1 INTO y
GO
EXEC sp_dbcmptlevel pubs, 70
GO
INSERT test
SELECT 2 ,1 INTO y
GO

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus