我遇到许多用户同时在数据库中插入记录并且在列scope_id中存在重复值的情况。 有没有办法保护价值重复?
@scope_id = SCOPE_IDENTITY()
我考虑过一个触发器,但也许是一个更简单的解决方案。(在该数据库之前检查该ID并不总是有效。)
答案 0 :(得分:2)
如果您使用的是SQL Server 12+,我建议您利用cordova.plugins.Keyboard.hideKeyboardAccessoryBar(false);
对象(MSDN reference)。
以上参考文献中的示例代码:
创建序列:
SEQUENCE
使用它:
CREATE SEQUENCE Test.CountBy1
START WITH 1
INCREMENT BY 1 ;
GO
DECLARE @NextID int ;
SET @NextID = NEXT VALUE FOR Test.CountBy1;
-- Some work happens
INSERT Test.Orders (OrderID, Name, Qty)
VALUES (@NextID, 'Rim', 2) ;
GO
语句在尝试插入记录之前会消耗序列的下一个值。
答案 1 :(得分:1)
您可以通过使用T-SQL函数NEWSEQUENTIALID
来实现。这将生成顺序全局唯一标识符,以存储在UNIQUEIDENTIFIER类型的属性中。 GUID保证在空间和时间上是唯一的
它也可以在声明表格时使用例如:
CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID())