【发布时间】:2014-06-18 12:08:51
【问题描述】:
我有一个带有 nvarchar(50) 列的 SQL Server 表。此列必须是唯一的,不能是 PK,因为另一列是 PK。所以我在这个列上设置了一个非聚集唯一索引。
在可序列化事务中的大量插入语句期间,我只想在不同的事务中执行基于此列的选择查询。但是这些插入似乎锁定了表。例如,如果我将唯一列的数据类型更改为 bigint,则不会发生锁定。
为什么 nvarchar 不工作,而 bigint 工作?使用 nvarchar(50) 作为数据类型,我怎样才能达到同样的效果?
【问题讨论】:
-
你不能只给这个列添加一个唯一的约束和索引吗?桌子有多大?
-
我不确定为什么会发生阻塞。但是,您可以将值放在另一个表中并只使用外键引用吗?
-
我忘了说我在 nvarchar(50) 列上有一个唯一索引,我将编辑我的问题
-
另一个表有什么帮助,因为我仍然需要对该表进行插入和选择?
-
您的
SELECT需要什么样的隔离?您不想要未提交的行吗?或者是否可以将它们包含在您的结果中?
标签: sql sql-server nvarchar unique-index