我的字段,表格,视图存储过程名称有时会出现问题。 例如:
SELECT from, to, rate FROM Table1
问题是来自 的 是SQL-92中的保留字。 您可以将字段名放在双引号中以解决此问题,但是如果其他一些数据库工具想要读取您的数据库呢? 这是您的数据库设计,如果其他应用程序出现数据库问题,则是您的错误。
还有很多其他reserved words(~300),我们应该避免所有这些。 如果将DBMS从制造商A更改为B,则应用程序可能会失败,因为某些字段名现在是保留字。 名为 PERCENT 的字段可能适用于oracle db,但在MS SQL Server上,必须将其视为保留字。
我有一个工具来检查我的数据库设计与这些保留字;你呢?
这是我的规则
答案 0 :(得分:2)
简单方法:只需确保引用每个字段名称。
编辑:任何合理的DB工具都应该做同样的事情,我当然从来没有遇到任何问题(至少在我自己的代码之外!)
答案 1 :(得分:2)
您不应该在表格中使用保留字作为列名,即使您可以引用它们。
引用它们会使代码变得非常笨拙,因为您必须在代码中的SQL语句中一直转义引号字符。在我看来,它还使SQL命令行成为真正的PITA。
最后它看起来很乱。最好花时间思考一个不与SQL关键字冲突的不同词。
你的规则对我来说很好。
答案 2 :(得分:1)
当然。为此,我有一个SQL_RESERVED_WORDS表。
Oracle只能处理30个字符表名BTW。他们都是大写的。
在表自行支付之前,只需要一个小时的不必要的调试。
答案 3 :(得分:0)
避免使用保留字。
请注意,大多数数据库(和数据库链接层)都有一种以编程方式列出所有保留字的方法。您可以将其用作应用程序启动时的健全性检查,以确保您没有误入歧途。
报价确实有效,所以你可以为了安全起见。但是,对于DBA和针对您的应用程序制作自定义报告的人来说,这会让生活变得非常尴尬,所以这应该仅用作创可贴。
答案 4 :(得分:0)
除了名称和保留字之间明显的混淆外,我认为至少有两个非常强大的理由可以避免使用保留字作为名称:
您不必使用严重影响可读性的引号(或MS世界中的方括号)。
NB:当您发现自己需要从SQL(所谓的“动态SQL”方法)或其他语言生成SQL代码时,可读性可能会受到特别严重的损害。你不希望单引号内的额外双引号,或额外重复的双引号,转义引号或任何其他模糊的东西。
例如,您希望如何获得这样的片段:
-- SQL -----------------------
declare @sql as varchar(4000)
set @sql = 'select "To", "From" from MyTable'
' VB -------------------------
Dim sql as String
sql = "select ""To"", ""From"" from MyTable"
// C++ -----------------------
String sql = "select \"To\", \"From\" from MyTable"
无论如何,大多数保留字都不适合命名表,列,变量等。在绝大多数情况下,名词(有时是形容词)对于名字来说比动词,副词和介词更好。 : - )
答案 5 :(得分:0)
我同意Yarik关于保留字的适用性的第二点。在OPs示例中,他使用“to”,“from”和“rate”。我心中的直接问题,也就是未来开发者的问题,是“来往于什么?”也许可以考虑将这些列重命名为“EffectiveFromDate”和“EffectiveUntilDate”,如果这是他们所代表的。
< / 2C>