我想了解使用以 @
符号开头的表名是否有任何缺点。
我们需要一个易于识别的模式来将这些表与同一架构中的其他表区分开来。
我们目前与以下所有人员合作:
- Oracle 10g 及以上
- SQLServer 2008 R2 及以上版本
- Postgres 9.1 及以上版本
我尝试了所有这些并且表创建成功,但我找不到好的文档来确定这是否真的被允许。
最佳答案
@
是(标准)SQL 中标识符的非法字符。
手册中记录了不需要双引号的有效(合法)标识符的规则:
Postgres manual本质上引用了 SQL 标准:
SQL identifiers and key words must begin with a letter (a-z, but also letters with diacritical marks and non-Latin letters) or an underscore (_). Subsequent characters in an identifier or key word can be letters, underscores, digits (0-9), or dollar signs ($)
Oracle manual本质上说的是一样的:
Nonquoted identifiers can contain only alphanumeric characters from your database character set and the underscore (_), dollar sign ($), and pound sign (#).
请注意,Oracle 在涉及 DBLinks 时有一个异常(exception):
Database links can also contain periods (.) and "at" signs (@). Oracle strongly discourages you from using $ and # in nonquoted identifiers.
如果您使用带引号的标识符,您可以在标识符中包含一个@
。但 Oracle 手册也指出:Oracle 不建议对数据库对象名称使用带引号的标识符
关于sql-server - 在 Oracle/SqlServer/PgSql 表名开头使用@,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29371917/