Я использую SQL Server 2012 Express. Я создал следующую таблицу
CREATE TABLE [dbo].[logis_location]
( [loc_id] int identity NOT NULL
, [loc_name] varchar(50) NOT NULL )
CREATE TABLE [dbo].[rev_bill]
( [bill_id] int identity NOT NULL ,
[loc_id] int NOT NULL )
ALTER TABLE [dbo].[rev_bill]
ADD CONSTRAINT [rev_bill_PK] PRIMARY KEY CLUSTERED ( [bill_id] , [loc_id] )
ALTER TABLE [dbo].[rev_bill] WITH CHECK
ADD CONSTRAINT [logis_location_rev_bill_FK1]
FOREIGN KEY ( [loc_id] )
Bill_id автоматически увеличивается, но таблица счетов имеет составной ключ, основанный на таблице местоположений loc_id, которая является внешним ключом. В результате получается следующий вывод
bill_id loc_id
1 1
2 1
3 2
4 2
5 1
6 3
7 2
Однако ожидаемый результат
bill_id loc_id
1 1
2 1
1 2
2 2
3 1
1 3
3 2
Я хочу увеличить специфический для местоположения bill_id наиболее безопасным способом. Это означает, что при вставке нового счета идентификатор счета должен быть увеличен, но с учетом loc_id. Как указано выше, если есть счет для данного местоположения (например: loc_id = 4 ), первый счет для этого местоположения должен иметь bill_id 1, а следующий должен быть 2. Это требование клиента. Пожалуйста, дайте мне некоторую направляющую линию.
bill_id
повторялись для каждогоloc_id
(и, предположительно, без пробелов)? за исключением некоторых конкретных ситуаций, было бы лучше просто иметь столбец с одним значением autogen, что означает, что каждый из них будет иметь уникальное значение... - person Clockwork-Muse   schedule 16.06.2014loc_id
, простой столбец идентификаторов будет работать нормально. - person Clockwork-Muse   schedule 17.06.2014