-5

IDNumberこの出力例に SQLを追加する方法:

 1300000001,1300000002,1300000003,13......

最初の 2 桁は現在の年の最後の 2 桁である必要があり、最後の 8 桁は次のidnumberような自動番号または連番である必要があります。00000001,00000002,00000003,00000004..

学生テーブルの主キーとして機能するため..

ヘルプのためのtnx..

4

1 に答える 1

1

これがIdを生成する私の方法です。

CREATE OR REPLACE TRIGGER GEN_ID BEFORE INSERT ON DEMO FOR EACH ROW
DECLARE
    TEMP_ID VARCHAR(10);
    HIGHEST_NUM NUMBER;
    N NUMBER;
    NUM_OF_DIGITS NUMBER;
BEGIN
    SELECT NVL(MAX(EMPNO),0)+1 INTO HIGHEST_NUM FROM DEMO;
    N:=HIGHEST_NUM;
    NUM_OF_DIGITS :=0;
    WHILE N!=0
    LOOP
        NUM_OF_DIGITS := NUM_OF_DIGITS + 1;
        N := TRUNC(N/10);
    END LOOP;
    TEMP_ID :='P';
    FOR I IN 1..(5-NUM_OF_DIGITS-1)
    LOOP
        TEMP_ID:=TEMP_ID||0;
    END LOOP;
    TEMP_ID := TEMP_ID||HIGHEST_NUM;
    :NEW.EMPNO := TEMP_ID;
END;
/

このロジックを使用してください。私はキャラクターを持っているので、連結を使用しています。これは一方向かもしれません。私はこれをOracleで疲れさせましたが、C#についてはよくわかりません。

これが論理です。

ID現在価値が前の権利に依存するシーケンスを生成する必要がありますか?それで、

最初のステップは、最後に使用されたID値を取得することです。これは、MAX(column)を使用して使用できます。次に、必要なシリアルである最大数に1を追加します。これは、1,2,3....などになります。

ステップ2:番号を取得した後、番号に存在する桁数をカウントします

ステップ3:10桁の数字を生成する必要があり、最初の2桁は年に基づいて12/13/14になります。したがって、今年の下2桁を取得する必要があります。

ステップ4: 10-2 [年の2桁として]-シーケンスの最大値の桁数を追加し、idとして保存します。

手順5:最大値をidと連結します。

于 2013-03-15T08:51:02.387 に答える