Sql 未提供值时生成下一个序列

Sql 未提供值时生成下一个序列,sql,sql-server,azure-sql-database,Sql,Sql Server,Azure Sql Database,我有一个bigint列,它不是唯一的。我希望能够在inserts上设置此列的值,但如果没有提供值,我希望自动生成数字列中的下一个序列 这是否可以同步进行?新值必须是唯一的,当同时插入两条记录时,不可能生成相同的数字 在数据库中定义一个Sequence对象,当insert语句没有显式提供值时,从要插入的序列中检索下一个值。这种逻辑可以在触发器中实现 正如其他人所建议的那样,标识列会更好。您需要在事务中生成标识列。这样,您就不会得到由两个线程生成的相同的bigint数。在表本身中有没有办法做到这一点

我有一个bigint列,它不是唯一的。我希望能够在inserts上设置此列的值,但如果没有提供值,我希望自动生成数字列中的下一个序列


这是否可以同步进行?新值必须是唯一的,当同时插入两条记录时,不可能生成相同的数字

在数据库中定义一个Sequence对象,当insert语句没有显式提供值时,从要插入的序列中检索下一个值。这种逻辑可以在触发器中实现


正如其他人所建议的那样,标识列会更好。

您需要在事务中生成标识列。这样,您就不会得到由两个线程生成的相同的bigint数。在表本身中有没有办法做到这一点,也许可以使用函数和触发器?听起来好像您需要清理数据,然后添加主键/唯一键约束@Tanner建议最好这样做,但是,如果你真的需要有重复的,那么使用而不是插入触发器将是你最好的选择。这样,在触发器代码中,您可以通过使用一个事务找出需要插入的下一个bigint数字,这样您就不会同时得到两个连接。我建议使用另一个列,即identity列。对我来说,一个可以为NULL或有值的列听起来不像一个键。这太完美了!正是我想要的。