2009-05-21 3 views
0

Можем ли мы указать 2 столбец идентичности в таблице. Если нет? если да, то почемуМожем ли мы иметь более одного столбца идентификации в таблице?

+0

См. Этот вопрос http://stackoverflow.com/questions/350950 –

+0

О другом вопросе от друга Джонатан - это только слабо связанное. –

+0

Вы конкретно ссылаетесь на тип данных IDENTITY в SQL Server? –

ответ

1

«Идентификационный столбец» НЕ является концепцией SQL. Вы должны иметь в виду некоторую конкретную реализацию со своими собственными причудами и расширением, а не SQL вообще, как утверждает ваш тег; отредактируйте и повторно пометьте свой вопрос. (Если вы имеете в виду «Microsoft SQL Server», ответ «нет», поскольку Microsoft считала, что это не имеет смысла [и на этот раз они были правы вправо! -)] »).

+0

Давай, имея две колонны с разными семенами и приращениями, будет весело! Серьезно, может быть, он говорит о первичных ключах? – Gromer

+0

Spanning pks that is. – Gromer

1

Зависит что вы подразумеваете под «идентичности»

Есть несколько реализации конкретных конструкций, таких как «ROWID» «подъязычная» и т.д., целью которого является определить оставляет потрясающее строку, используя значение, генерируемое СУБД - в большинстве dbms, у вас есть одна и только одна из этих строк.

«Идентификация» строки также может означать первичный ключ. ANSI sql поддерживает первичные ключи, состоящие из многих столбцов, в большинстве СУБД вы можете включать любые или все подходящие столбцы в первичный ключ. Идентификация тогда состоит из комбинации всех столбцов в первичном ключе - но и это большая НО, но логически это все еще представляет собой единую идентичность.

Вы можете указать «уникальное» ограничение *** s *** на любые или все подходящие столбцы, каждая константа может считаться «личностью» сама по себе, поэтому ответ на ваш вопрос, вероятно, «да» - но Я никогда не видел реальной реализации этого.

0

Точки других людей о «идентичности», не являющиеся типом в стандарте SQL, являются правильными.

Динамический сервер IBM Informix (IDS) поддерживает типы SERIAL, SERIAL8 и BIGSERIAL. Это целые типы с дополнительными свойствами, которые, если вы вставляете в них нуль (или если вы не укажете значение, которое нужно вставить), вместо этого применяется следующее более высокое ранее неиспользованное значение. Это соответствует тому, что другая СУБД вызывает столбец идентификации. (IDS также предоставляет последовательности.)

Любое любопытство (quirk) заключается в том, что вам разрешено иметь как столбец SERIAL, так и столбец SERIAL8 или BIGSERIAL в одной таблице. Это не рекомендуется и неразумно; однако это не запрещено.

Большинство СУБД не допускают двух отдельных столбцов «идентичность» в одной таблице.

Смежные вопросы