在表中插入值时,UNIQUEIDENTIFIER是自动生成的数字吗?

烤蛋糕

加载程序告诉我时出现错误

无法将值NULL插入表“ MCAST.a01.tbl_enrollmentRequests”的“ requestID”列中;列不允许为空。INSERT失败。

现在requestID是一种UNIQUEIDENTIFIER变量。UNIQUEIDENTIFIER自动生成的数字吗?以下是我的代码示例,您可以在其中查看requestID

CREATE PROCEDURE [a01].[usp_auditAcceptRequest]
    (@AccountID UNIQUEIDENTIFIER, 
     @GroupID UNIQUEIDENTIFIER, 
     @Reason NVARCHAR(45)
    )
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO [a01].[tbl_enrollmentRequests] (requestDate, groupID, accountID)
    VALUES (SYSDATETIMEOFFSET(), @GroupID, @AccountID)

    DECLARE @RequestID UNIQUEIDENTIFIER 

    SET @RequestID = (SELECT requestID 
                      FROM [a01].tbl_enrollmentRequests 
                      WHERE groupID = @GroupID AND accountID = @AccountID)

    INSERT INTO [a01].[tbl_enrollmentAudits] (entryDate, requestID, groupID, accountID, accepted, reason)
    VALUES (SYSDATETIMEOFFSET(), @RequestID, @GroupID, @AccountID, 1, @Reason)

    DELETE FROM [a01].[tbl_enrollmentRequests]
    WHERE requestID = @RequestID
END;
GO

这是我执行上述程序的地方

BEGIN
DECLARE @AccountID UNIQUEIDENTIFIER;
DECLARE @GroupID UNIQUEIDENTIFIER;

(SELECT @AccountID = accountID 
FROM [a01].[tbl_userAccounts] WHERE accountUsername='saraht');

(SELECT @GroupID = groupID FROM [a01].[tbl_groups] WHERE groupName LIKE '%Foo%');

EXECUTE [a01].[usp_addRequest] @AccountID, @GroupID;
END;
GO

谢谢你的帮助 !!

卢塞罗

就是说,auniqueidentifier是普通列,如果要具有自动分配的值,则需要向该列添加默认值。通常,用于默认值的函数是newid()newsequentialid()

根据发布的表定义进行编辑;您可以使用此:

CREATE TABLE [a01].[tbl_enrollmentRequests](
  requestID UNIQUEIDENTIFIER PRIMARY KEY DEFAULT (NEWID()), 
  requestDate DATETIMEOFFSET NOT NULL, 
  groupID UNIQUEIDENTIFIER REFERENCES [a01].[tbl_groups] (groupID) NOT NULL, 
  accountID UNIQUEIDENTIFIER REFERENCES [a01].[tbl_userAccounts] (accountID) NOT NULL
);

话虽如此,您也可以在插入之前预先生成一个uniqueidentifier并将其分配给存储过程中的变量,因为可以假定生成的GUID与任何现有的GUID都不冲突。这样做的好处是,即使不从OUTPUT子句中检索出该行的ID,您也知道该行的ID

关于性能的通知:newid()由于随机性,插入会导致许多页面拆分,因此大量的具有随机GUID的集群主键(由生成)的行是性能问题。newsequentialid()功能几乎可以完全解决性能问题,但可以使生成的GUID易于猜测,因此只能在不需要“随机” ID的情况下使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在插入时在SQL中自动生成uniqueidentifier的问题

来自分类Dev

在父表中插入值时自动在子表中生成ID

来自分类Dev

在父表中插入值时自动在子表中生成ID

来自分类Dev

当用户向表中插入新记录时,如何知道是否自动生成了代表表主键的字段值?

来自分类Dev

当用户向表中插入新记录时,如何知道是否自动生成了代表表主键的字段值?

来自分类Dev

如何在Sql Server中的插入查询上自动生成UniqueIdentifier?

来自分类Dev

在另一个组合框中插入数字时自动生成组合框

来自分类Dev

如何使用vb在具有uniqueidentifier列的sql表中插入值?

来自分类Dev

将多个生成的值插入表中

来自分类Dev

将多个生成的值插入表中

来自分类Dev

当另一个表中不存在一个值时插入表中吗?

来自分类Dev

当另一个表中不存在一个值时插入表中吗?

来自分类Dev

如何使用自动增量主键在表中插入值?

来自分类Dev

如何在依赖表中自动插入值?

来自分类Dev

根据数字将单个值插入表中

来自分类Dev

在 Django 中创建实例时自动生成表连接

来自分类Dev

当在另一张表中插入一行时如何自动增加一张表中的值

来自分类Dev

jdbi返回插入时自动生成的值

来自分类Dev

尝试将值插入自动生成的元素

来自分类Dev

java8 + mariadb 5.6:如何在插入 blob 时获取自动生成的值

来自分类Dev

在android sqlite中创建表时插入默认值

来自分类Dev

将值插入MySql中的表时出错

来自分类Dev

更新视图时,在基础表中插入其他值

来自分类Dev

插入目标表时跳过mysql中的重复值

来自分类Dev

当将值插入/更新/删除同一表中的另一列时,如何使一列具有自动反映的值?

来自分类Dev

插入查询完成后,如何从表中获取自动生成的主键ID?

来自分类Dev

我可以使用表中的值向表中插入动态行数吗?

来自分类Dev

从触发器中的表中获取非自动增量主键的最后输入值插入

来自分类Dev

在网址中插入随机生成的数字

Related 相关文章

  1. 1

    在插入时在SQL中自动生成uniqueidentifier的问题

  2. 2

    在父表中插入值时自动在子表中生成ID

  3. 3

    在父表中插入值时自动在子表中生成ID

  4. 4

    当用户向表中插入新记录时,如何知道是否自动生成了代表表主键的字段值?

  5. 5

    当用户向表中插入新记录时,如何知道是否自动生成了代表表主键的字段值?

  6. 6

    如何在Sql Server中的插入查询上自动生成UniqueIdentifier?

  7. 7

    在另一个组合框中插入数字时自动生成组合框

  8. 8

    如何使用vb在具有uniqueidentifier列的sql表中插入值?

  9. 9

    将多个生成的值插入表中

  10. 10

    将多个生成的值插入表中

  11. 11

    当另一个表中不存在一个值时插入表中吗?

  12. 12

    当另一个表中不存在一个值时插入表中吗?

  13. 13

    如何使用自动增量主键在表中插入值?

  14. 14

    如何在依赖表中自动插入值?

  15. 15

    根据数字将单个值插入表中

  16. 16

    在 Django 中创建实例时自动生成表连接

  17. 17

    当在另一张表中插入一行时如何自动增加一张表中的值

  18. 18

    jdbi返回插入时自动生成的值

  19. 19

    尝试将值插入自动生成的元素

  20. 20

    java8 + mariadb 5.6:如何在插入 blob 时获取自动生成的值

  21. 21

    在android sqlite中创建表时插入默认值

  22. 22

    将值插入MySql中的表时出错

  23. 23

    更新视图时,在基础表中插入其他值

  24. 24

    插入目标表时跳过mysql中的重复值

  25. 25

    当将值插入/更新/删除同一表中的另一列时,如何使一列具有自动反映的值?

  26. 26

    插入查询完成后,如何从表中获取自动生成的主键ID?

  27. 27

    我可以使用表中的值向表中插入动态行数吗?

  28. 28

    从触发器中的表中获取非自动增量主键的最后输入值插入

  29. 29

    在网址中插入随机生成的数字

热门标签

归档