sql - 将 name 存储为 "sysname"而不是 "nvarchar(128)"有什么好处?

标签 sql sql-server sql-server-2012

我希望创建一个表来存储有关存储过程的信息。我需要存储 SP_Name .我最初的计划是使用 SP_Name NVARCHAR(128) NOT NULL .

从程序我将使用 OBJECT_NAME(@@PROCID)获取 SP_Name 的值的函数柱子。

technet没有提供关于 SYSNAME 的太多信息数据类型。 What is SYSNAME data type in SQL Server?问题只解释了它是什么,而不是它是如何工作的,另外答案已经有将近 3 年的历史了,微软在 2012 和 2014 版本中对 SQL Server 进行了多次升级。

我会再次存储任何好处SP_NameSYSNAMENVARCHAR(128)柱子?或者我应该避免使用可能在更高版本中删除或更改的专有数据类型?

最佳答案

它提供了一种抽象,使您免受实现细节的影响。好处是,如果 future 版本中的定义发生变化,您的代码仍然可以正常工作。
sysname曾经相当于 varchar(30) .例如,如果 SQL Server 2016 允许对象标识符长度为 256 个字符,则您不需要查找和更新所有硬编码的 128 个字符。

我也更喜欢使用它,因为无论如何使用该数据类型存储对象标识符的列/变量在语义上看起来更整洁。

关于sql - 将 name 存储为 "sysname"而不是 "nvarchar(128)"有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21884200/

相关文章:

mysql - 查询获取MYSQL中列子集的总和

javascript - Nodejs npm mssql SQLDbType.Structured?

sql - 删除数据库中的所有行后,第一个主键是 1005

mysql - 使用 COUNT(*) 查询返回零行

sql - 如何获取 SQL 格式的输出

sql-server - 使用生成脚本从sql server 2012导出日期数据

sql - 重用表变量?

sql - 日期范围的最小值或最大值 - 根据产品 ID、价格和日期范围确定给定日期范围的最低价格

delphi - 如何从 SQL Express 2012 获取数据更改通知?

php - MySQL行锁的缺点