我有一组父子表(1对多的关系)。我正在构建这些表,并对使用PK和自动增量功能存在疑虑。
父表具有自动编号PK(用于存储销售票头)。这里的一个记录表示一张票。
子表用于存储票据详细信息。这里的一个记录是票据中的一行项目(例如可乐、玛氏棒等)。
我了解到,子表的PK应该有2个字段:
1. 父表的PK 2. 使该票据内的行项目唯一的数字
如果我使用IDENTITY,它将不会在父PK更改后“重新启动”。
我将用一个例子来展示它:
A)SQL做什么
注意:Col1来自父表;在Col1更改后,Col2重置;由Col1和Col2组成的内容是唯一的。
SQL Server是否实现了这种键的使用?还是我需要编写代码?
父表具有自动编号PK(用于存储销售票头)。这里的一个记录表示一张票。
子表用于存储票据详细信息。这里的一个记录是票据中的一行项目(例如可乐、玛氏棒等)。
我了解到,子表的PK应该有2个字段:
1. 父表的PK 2. 使该票据内的行项目唯一的数字
如果我使用IDENTITY,它将不会在父PK更改后“重新启动”。
我将用一个例子来展示它:
A)SQL做什么
Parent table
Col1 Col2
1 1000
2 2543
3 3454
Note: Col1 is IDENTITY
Child Table
Col1 Col2 Col3
1 1 Coke
1 2 Mars Bar
2 3 Sprite
3 4 Coke
3 5 Sprite
3 6 Mars Bar
Note: Col1 is taken from Parent Table; Col2 is IDENTITY
B) 我想要实现什么
Parent table is the same as above
Child Table
Col1 Col2 Col3
1 1 Coke
1 2 Mars Bar
2 1 Sprite
3 1 Coke
3 2 Sprite
3 3 Mars Bar
注意:Col1来自父表;在Col1更改后,Col2重置;由Col1和Col2组成的内容是唯一的。
SQL Server是否实现了这种键的使用?还是我需要编写代码?
ROW_NUMBER() OVER (Partition By Col1 ORDER BY Col1, Col2)
。 - EBarr