- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在向表中添加新的 GUID/Uniqueidentifier 列。
ALTER TABLE table_name
ADD VersionNumber UNIQUEIDENTIFIER UNIQUE NOT NULL DEFAULT NEWSEQUENTIALID()
GO
当表中的记录更新时,我想更新此列“VersionNumber”。所以我创建了一个新的触发器
CREATE TRIGGER [DBO].[TR_TABLE_NAMWE]
ON [DBO].[TABLE_NAME]
AFTER UPDATE
AS
BEGIN
UPDATE TABLE_NAME
SET VERSIONNUMBER=NEWSEQUENTIALID()
FROM TABLE_NAME D
JOIN INSERTED I ON D.ID=I.ID/* some ID which is used to join*/
END
GO
但刚刚意识到 NEWSEQUENTIALID() 只能与 CREATE TABLE
或 ALTER TABLE
一起使用。我收到这个错误
The newsequentialid() built-in function can only be used in a DEFAULT expression for a column of type 'uniqueidentifier' in a CREATE TABLE or ALTER TABLE statement. It cannot be combined with other operators to form a complex scalar expression.
有解决办法吗?
Edit1:在触发器中将 NEWSEQUENTIALID()
更改为 NEWID()
解决了这个问题,但我正在索引此列并使用 NEWID()
> 不是最优的
最佳答案
正如您所说,它仅在某些条件下可用,您可以做一些令人讨厌的事情,例如:
DECLARE @T TABLE (G UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID())
INSERT @T OUTPUT INSERTED.G VALUES (DEFAULT)
它必须是 GUID 吗?如果您使用 rowversion
您无需触发器即可获得相同的功能以及更好的索引性能。
关于sql-server - 将 NEWSEQUENTIALID() 与 UPDATE 触发器结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2803059/
根据Microsoft's documentation on NEWSEQUENTIALID ,NEWSEQUENTIALID 的输出是可预测的。但可预测性如何呢?假设我有一个由 NEWSEQUENT
想象一个如下所示的表格: CREATE TABLE [dbo].[test]( [id] [uniqueidentifier] NULL, [name] [varchar](50)
我正在为我公司即将启动的新数据库制定数据库标准。我们试图定义的事情之一是与唯一标识符相关的主键和聚集索引规则。 (注意:我不想讨论使用 UniqueIdentifier 作为主键或聚集索引的利弊。网络
目前,我们有许多在主键上使用 newid() 的表。这会导致大量碎片。所以我想更改列以使用 newsequentialid() 代替。 我想现有的数据将仍然非常碎片化,但新数据的碎片化程度会降低。这意
使用 UuidCreateSequential 时发生碰撞的几率是多少? ,或者它的包装器 NewSequentialID ?我发现的最具体的顺序 guid 是“比随机 guid 更有可能”。 将其与
我看到了这条评论: "Late last week Azure launched a preview of the latest version of Azure SQL DB and in that
我试图了解 NewId 和 'NewSequentialId 在实际生活中的用法,我通常在创建新的时使用 Identity 属性像这样的表格: CREATE TABLE MYTABLE ( [
我有一个新应用程序,我想使用 GUID 作为聚簇表的主键。我听说使用 newid() 有缺点,所以我想了解有关 newsequentialid() 的更多信息。 具体来说,使用 int 比使用 new
我在 sql server management studio 中遇到 newsequentialid() 学习问题。创建一个包含 uniqueidentifier 列“UniqueID”的表,并将默
我正在向表中添加新的 GUID/Uniqueidentifier 列。 ALTER TABLE table_name ADD VersionNumber UNIQUEIDENTIFIER UNIQUE
我正在做一些研究,我遇到了一个无法解释的异常情况(而且我在 Google 上找不到任何信息)。考虑以下 SQL: CREATE TABLE MyGuid ( ID UNIQUEIDENTIFI
我们使用 GUID 作为主键,您知道默认情况下它是集群的。 当向表中插入新行时,它会插入到表中的随机页面(因为 GUID 是随机的)。这具有可衡量的性能影响,因为数据库将始终拆分数据页(碎片)。但我使
在所有主键都是 GUID 的数据库中,使用 newid() 与 newsequentialid() 作为“默认值或绑定(bind)”有什么区别/含义和/或优缺点。 我所知道的唯一区别是 newid()
这是一个通用查询,我的场景是:我有一个 DB(MS SQL) 并创建一个表,其中有一列作为唯一标识符,并使用 NEWSEQUENTIALID() 分配值,我知道它将始终是唯一 ID。但是,如果我在三台
使用下面的代码, public class UserProfile { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] pu
如何使用 newsequentialid() 作为 PK 列中的默认值? 我有这个注释: [Key, DatabaseGenerated(DatabaseGeneratedOption.Identit
我正在尝试导入从本地 SQL 数据库创建的 bacpac 文件/数据层应用程序,但遇到以下错误: Error encountered during the service operation. Cou
我在表中有一个 uniqueidentifier 列,它不是键或索引。我想使用 NEWSEQUENTIALID() 设置默认值,但出现错误: Error validating default for
我尝试在 Azure SQL DB 上使用以下语法创建一个表,但它抛出以下错误。 谁能告诉我为什么这里不允许 NEWSEQUENTIALID() 。当我在本地服务器上创建相同的内容时,它工作正常。 是
我有一个 ASP.NET Identity 2 实现(没有用户数据,只有基表),我有一个类型为 UNIQUEIDENTIFIER 的 userId。 该应用程序首先是代码,我使用的是 EF6。 这是
我是一名优秀的程序员,十分优秀!