2009-05-21 15 views
0

テーブルに2つのID列を指定できますか?理由がない場合は、はいの場合テーブルに複数のID列を設定できますか?

+0

t'otherジョナサンからt'other質問についてこの質問http://stackoverflow.com/questions/350950 –

+0

を参照してください - 「だけ緩く関連TIS。 –

+0

特にSQL ServerのIDENTITYデータ型を参照していますか? –

答えて

1

"identity column"はSQLの概念ではありません。独自の癖や拡張子を持つ特定の実装を念頭に置いておく必要があります。あなたの質問を編集して再タグ付けしてください。 (「Microsoft SQL Server」を意味するようになった場合、答えは「いいえ、マイクロソフト社はそれが理にかなっていないと思ったからです。

+0

是非、種子と増分が異なる2つのアイデンティティ列を持つことは楽しいでしょう!すべての深刻さで、多分彼は主キーについて話していますか? – Gromer

+0

スパンキングはです。 – Gromer

1

は「同一」であなたは何を意味するかによって異なります

そのような目的uniquly DBMSによって生成された値を使用して行を識別することであるなど、「ROWID」「OID」など、いくつかの実装固有の構文があります - ほとんどでdbmsシステムには、1行につきこれらのうちの1つだけがあります。

行の「同一性」は、主キーを意味する場合もあります。 ANSI SQLは、多くの列からなる主キーをサポートしています。ほとんどのDBMSでは、主キーに適切な列のいずれかまたはすべてを含めることができます。アイデンティティはプライマリキーのすべての列の組み合わせから成りますが、これは論理的には大きなものですが、これは依然として単一のアイデンティティを構成しています。

あなたの質問への答えは「はい」おそらくあるので、いずれか、またはすべての適切な列に各constaintは自身の「アイデンティティ」と見なすことができる*** sの***ユニークな「制約を指定することができます - しかし、私はこれを実際に実践したことは一度も見たことがありません。

0

SQL標準の型ではない 'identity'についての他の人の意見は正しいです。

IBM Informix Dynamic Server(IDS)は、タイプSERIAL、SERIAL8およびBIGSERIALをサポートします。これらは、追加するプロパティを持つ整数型です。ゼロを挿入する場合(または挿入する値を指定しない場合)は、以前使用されていなかった次の値が代わりに適用されます。これは、他のDBMSがID列を呼び出すものに緩やかに対応します。 (IDSもシーケンスを提供します)

1つのテーブルにSERIAL列とSERIAL8列またはBIGSERIAL列の両方を持たせることができるというのは、好奇心が強いです。そうすることはお勧めできませんし、賢明ではありません。ただし、これは禁止されていません。

ほとんどのDBMSは、単一のテーブルに二つの別々の「アイデンティティ」の列を許可していません。

関連する問題