是否可以选择将“file”,“key”和“trigger”设置为ms-sql server的字段名?
我们有很大的应用程序用web2py写的PostgreSQL作为db,而且有些字段有这些名字。一个客户希望使用ms-sql作为数据库服务器,我试图不破坏数据库结构中的兼容性。
使用方括号(在谷歌中找到)没有帮助(无法使用'[file]') - ms-sql拒绝它。
答案 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]
。