web2py,microsoft sql server和字段的受限名称

时间:2013-12-19 14:36:42

标签: sql-server web2py

是否可以选择将“file”,“key”和“trigger”设置为ms-sql server的字段名?

我们有很大的应用程序用web2py写的PostgreSQL作为db,而且有些字段有这些名字。一个客户希望使用ms-sql作为数据库服务器,我试图不破坏数据库结构中的兼容性。

使用方括号(在谷歌中找到)没有帮助(无法使用'[file]') - ms-sql拒绝它。

2 个答案:

答案 0 :(得分:1)

documentation非常明确:

  

虽然在语法上可以使用SQL Server保留   您可以使用Transact-SQL脚本中的关键字作为标识符和对象名称   只能通过使用分隔标识符来执行此操作。

SQL Server中使用的分隔符是双引号或[]。因此,您可以将它们定义为:

[file]

"file"

请注意,您需要在任何位置使用分隔符。

不鼓励对这些列使用保留字。但是,实际上,您可能在不同数据库之间具有兼容性的用例,此功能将非常有用。

我不知道为什么方括号会失败。它适用于SQL Fiddle

答案 1 :(得分:1)

在尝试使用不符合标识符名称规则的字段(例如'My File')的旧版SQL Server表时,我偶然发现了同样的问题。

阅读源代码我发现这些情况存在 rname字段属性

Field('my_file', 'string', rname='[My File]'),

有了这个,Web2Py使用my_file字段名称,生成的与数据库交互的实际SQL / DML将改为使用[My File]