0

同じテーブル内の 2 つの列を自動インクリメントする方法があるかどうか疑問に思っていました。

私は user_id を持つデータベースを持っているので、登録されたすべてのユーザーは一意の番号を持っています。しかし、ユーザーがアップロードするすべてのファイルが一意の番号を取得するように、file_id を追加したいと考えています。

任意のヒント ?ありがとう

4

3 に答える 3

2

データベースが正しく正規化されるようにするには、ファイルのアップロードを別のテーブルに保存する必要があります。

これは、1 人のユーザーが複数のファイルを持つ可能性があり、テーブルがファイル レコードの ID フィールドを正しくインクリメントできることを意味します。

ウィキペディアでデータベースの正規化について読むことができます: http://en.wikipedia.org/wiki/Database_normalization

于 2012-05-18T09:26:01.460 に答える
1

いいえ、テーブルごとに1つのID列のみが許可されます。

SQl Serverを使用している場合は、次の手順に従ってください。

2番目のフィールドが静的である場合(編集する必要がなく、値を生成するために単純なロジックに従います)、実行できることは、計算されたフィールドとして2番目のフィールドを作成することです。次に例を示します。

create table autoINC(
field1 int identity(1,1),
field2 as field1+1,
real_field varchar(50))

insert into autoINC values('test')
select * from autoINC 

1   2   test

2番目のフィールドを更新する必要がある場合は、トリガーを使用する必要があります

于 2012-05-18T09:29:07.053 に答える
0

データベースによっては、トリガーなどのソリューションを使用できると思います。

MSSQLでは、更新時のトリガーが機能するはずです。

ただし、ファイル名にユーザーIDが含まれていない限り、これによって一意のファイル名が保証されるわけではありません。

fileidをユーザーごとにシーケンシャルにする必要がある理由はありますか?

そうでない場合は、ユーザーIDフィールドをファイルテーブルに追加し、その中に別のファイルIDID列を追加します。

于 2012-05-18T09:28:46.900 に答える