Автоматическое приращение по нескольким столбцам идентификаторов в MS SQL 2005 или 2008 - PullRequest
2 голосов
/ 23 июня 2010

Я хочу иметь две разные таблицы в MS SQL, например, пользователей и группы, обе с идентификатором столбца.Можно ли создать автоинкремент на два столбца идентификаторов?Я хочу иметь третью таблицу с общей информацией для этих двух таблиц и хочу идентифицировать уникальную запись.

В Oracle есть SEQUENCE.

Можно это сделать?

Спасибо,

Мартин Пилч

Ответы [ 3 ]

2 голосов
/ 23 июня 2010

Afaik, SQL Server не имеет концепции, в которой вы можете использовать именованный идентификатор в нескольких таблицах (ср. Оракулы SEQUENCE)

У вас есть несколько вариантовчтобы дифференцировать данные, поступающие из обеих таблиц

  • Используйте GUID в качестве столбца идентификатора в обеих таблицах.
  • В третьей таблице манипулируйтеИдентификатор одной из обеих таблиц, приводящий к уникальному идентификатору (например, умножьте на -1). Я предполагаю, что ваша третья таблица будет отображаться на обеих других таблицах.
  • Переосмыслите свой план относительно того, зачем вам нужна такая конструкция.

Еслидизайн не может быть изменен, использование GUID было бы моим выбором.

0 голосов
/ 23 июня 2010

Я не уверен, что именно вы ищете, но вы можете иметь поля автоинкрементации в SQL Server, используя свойство IDENTITY:

CREATE TABLE new_employees
(
 id_num int IDENTITY(1,1),
 fname varchar (20),
 minit char(1),
 lname varchar(30)
);

В приведенном выше примере(взято со связанной страницы), поле id_num будет автоматически увеличиваться, начиная с начального числа 1 и увеличивая его на 1.

Вы можете иметь такое поле в каждой таблице и множество для многихмногие таблицы, которые связывают два.

0 голосов
/ 23 июня 2010

Для SQL Server вы получили Идентификационное свойство .

Ваша третья таблица должна ссылаться на пользователей и группы с помощью внешнего ключа .

Чтобы добиться уникальности обоих столбцов в третьей таблице, просто используйте ограничение уникальности, например:

CREATE TABLE Third (
  id_user INT references Users(id),
  id_group INT references Groups(id),
  CONSTRAINT user_group_unique UNIQUE(id_user, id_group)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...