![]() |
1
14
只需将标识增量配置为>1例如,表1使用标识(1,10)[1,11,21…],表2使用标识(2,10)[2,12,22…]。如果以后需要,这也会给您一些扩展空间。 |
![]() |
3
2
请注意,与普通整数键相比,您将获得显著的性能提升。 |
![]() |
4
1
使用另一个ID键为int类型的表,将其默认为1,称为KeyID或其他。 让存储过程检索值,添加1,然后更新KeyID,然后将其返回给正在更新需要新的唯一键的两个表的存储过程。 这将确保ID是一个int,并且在使用存储过程生成新ID的一组表之间是唯一的。 |
![]() |
5
1
我不是Microsoft SQL Server的普通用户,因此请原谅任何语法错误。但我的想法是:
|
![]() |
6
0
我不知道你会怎么称呼它。 如果不想使用GUID或单独的表,还可以创建一个函数,查看两个表中ID的最大值,并将其添加到该值中(或类似的内容)。 然后可以在两个表上的insert触发器中调用该函数。 |
![]() |
7
0
这个问题的许多解决方案都避免使用GUID,并使用了好的旧整数。这在合并复制情况下也很常见,其中许多卫星站点与主站点合并,需要避免密钥冲突。 如果GUID不适用于您,并且您绝对必须具有int、bigint或类似内容,那么您可以始终只使用一个标识列,并使每个表具有不同的种子值。这些数据类型具有非常广泛的范围,并且将范围划分为可用段并不太困难,特别是如果您只需要两个拆分。例如,基本int的范围从-2^31(-2147483648)到2^31-1(2147483647)。例如,对于客户表来说,这已经足够了。 Transact-SQL参考(SQL Server 2000) int, bigint, smallint, and tinyint 例子:
|
![]() |
8
0
如果您真的需要对int执行此操作,并且您有一个自动递增的数字,那么我以前执行此操作的方法是将id field auto increment函数更改为另一个表的序列。在ms sql或my sql中,我不太确定,但在pgsql中,这意味着在sql中,您将有此字段
其中,table_two_sequence是另一个表的序列函数。然后通过插入一些数据来测试它。我真的很抱歉,如果这在ms sql中不起作用,我会尽量避开它。失败的GUID是最好的方式,正如其他人所提到的。或者,当你插入你使用的代码时,你可以在其中加入一个算法,但它可能会变得混乱。 或者,考虑将数据放在一个表中,因为这是一种解决方法。如果需要,可以使用一个模拟两个表的视图。只是一个想法。 希望我能帮上忙 |
![]() |
9
0
https://msdn.microsoft.com/en-us/library/ff878091.aspx 这正是你需要的。 我应该很容易用表来模拟序列对象 选择值和增量。[您希望使用函数,但函数 这个黑客怎么样?创建一个包含两列的表(MySequence):和标识列(SequenceValue)和伪列(DummyValue),并使用此存储过程获取新的序列值。表中唯一的一行是检索到的最后一个序列值。
|
![]() |
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
SoT · SQL Server中求和函数的工作方式 2 年前 |
![]() |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
![]() |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
![]() |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |