我正在使用查询命令来创建SQL Server表。我不希望列名与任何SQL Server关键字匹配(例如:use,create,...)。如何检查列名(在查询字符串中)与任何SQL Server关键字都不匹配?
更新1:
当然,除了创建关键字列表,然后进行手拉手比较。
既然你在询问命名,那么让我给你一些建议,这些建议将为你的问题提供一个可能的答案:
如果你不确定,只要养成在[SquareBraces]
中总是围绕对象名称的习惯,那么你称之为对象并不重要。
但话说回来,最好遵循一个好的惯例,无论是你工作场所常见的惯例,还是find another sensible惯例(有时似乎有更多关于命名约定的意见,而不是人们编码它们!)。
我的偏好(FWIW)简单地说是:
[Order]
,[OrderLine]
,[Customer]
等。要回答你的原始问题,你会发现ORDER
是一个关键字,但是只要你把方括号放在它周围,解析器知道它是一个对象。每次都可以工作,并且您不必为包含订单记录的表格制作人为或冗余的名称,例如CustomerOrder
。[Customer_Contact]
,[Product_ProductCategory]
等。[Id]
,无论哪个实体都是主键,除非有非常好的技术理由不这样做,这很少见。[CustomerId]
。至于为什么我以单数形式命名表,而不是将表视为“客户”的集合,我将其视为存储“客户”类型的对象的存储库。当使用一些ORMs时我的效果特别好(我喜欢C#中的Dapper,但是对于其他一些几乎被迫多元化的人来说它不能很好地工作),所以你必须找出最适合你的方法和你的方法。最舒服的。
祝好运!
在编写脚本以创建表时,与关键字匹配的列名称将以粉色,蓝色,灰色变化。用[]
封装有问题的列。
例:
CREATE TABLE MyTable([DateTime] datetime)
不确定系统数据库中是否有系统表,您可以从中查询,但在此处删除它可能对您有用。