sql >> データベース >  >> RDS >> Sqlserver

UID12345678のようなSQLで一意のIDを自動的に生成するにはどうすればよいですか?

    私の意見では、実行可能な唯一の解決策は

    を使用することです。
    • ID INT IDENTITY(1,1) SQLServerに数値の自動増分を処理させるための列
    • 計算、永続化 その数値を必要な値に変換する列

    だからこれを試してみてください:

    CREATE TABLE dbo.tblUsers
      (ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
       UserID AS 'UID' + RIGHT('00000000' + CAST(ID AS VARCHAR(8)), 8) PERSISTED,
       .... your other columns here....
      )
    

    これで、tblUsersに行を挿入するたびに IDの値を指定せずに またはUserID

    INSERT INTO dbo.tblUsersCol1, Col2, ..., ColN)
    VALUES (Val1, Val2, ....., ValN)
    

    そうすれば、SQLServerは自動的かつ安全に IDを増やします 値、およびUserID UID00000001のような値が含まれます 、UID00000002 、......など-自動的に、安全に、確実に、重複はありません。

    更新:UserID 計算されます -しかし、それでもコース データ型があります 、オブジェクトエクスプローラーをざっと見ると、次のことがわかります。



    1. 1985-02-07T00:00:00.000Z(ISO8601)をOracleで日付値に変換するにはどうすればよいですか?

    2. PostgreSQL一時テーブル

    3. JavaからPL/SQLに配列を返す方法は?

    4. MYSQL自己結合はどのように機能しますか?