.NET 数据访问与展示全解析
一、SQL Server 中 IDENTITY 函数的问题
在 SQL Server 里, @@IDENTITY
函数的工作方式存在问题。它返回当前会话创建的最后一个标识值,如图 21 - 12 所示,这并不完全可靠。
除了 @@IDENTITY
,还有另外两个标识函数,但它们也都有潜在问题:
- SCOPE_IDENTITY() :返回当前作用域内创建的最后一个标识值。SQL Server 将作用域定义为存储过程、触发器或函数。多数情况下它能正常工作,但如果有人在存储过程中添加了另一个 INSERT
语句,你可能会得到意外的值。
- IDENT_CURRENT() :返回指定表在任何作用域内生成的最后一个标识值。例如,若两个用户同时访问 SQL Server,有可能会获取到其他用户生成的标识值。
由此可见,追踪这类问题并不容易,所以在 SQL Server 中使用 IDENTITY
列时要格外小心。
二、数据库命名规范
虽然以下命名规范与 .NET 没有直接关联,但值得分享和遵循,特别是在命名约束时。
数据库表命名规范
- 使用单数名称 :例如使用
Product
而非Products
。这样在向客户解释数据库架构时,语法上更合适,比如 “