1

次のテーブルを作成しました。データベースに行が追加されるたびに、ユーザー ID を自動インクリメントしたいと考えています。ただし、いくつかのテーブルがあり、各 ID に文字列プレフィックスを付けるのが理想的であるため、ID を次のように 000001 としてフォーマットすることを希望します。

userID
----------
user000001
user000002
user000003


CREATE TABLE UserTable (
userID VARCHAR(20),
username VARCHAR(250) NOT NULL,
firstName VARCHAR(250) NOT NULL,
lastName VARCHAR(250) NOT NULL,
CONSTRAINT pkUserID
    PRIMARY KEY (userID),
CONSTRAINT uniUsername
    UNIQUE (username)
);
4

2 に答える 2

4

以下のコードに示すように、トリガーとシーケンスを組み合わせて使用​​する必要があります。

CREATE SEQUENCE CREATE SEQUENCE usertable_seq
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;
/

CREATE OR REPLACE TRIGGER usertable_trigger  
BEFORE INSERT ON UserTable
FOR EACH ROW

BEGIN
  SELECT 'user' || to_char(usertable_seq.NEXTVAL, '000099')
  INTO   :new.userID
  FROM   dual;
END;
/
于 2013-04-20T08:49:11.657 に答える
2

プレフィックスuserはすべての ID に付けられるため、まったく意味がありません。それを落として、ID NUMBER唯一のものを使用してください。さらに、Jugal のアドバイスに従ってください。

于 2013-04-20T08:50:15.193 に答える