定義済みのコードを添付した一意のIDを自動的に生成したい。
例:
UID12345678
CUSID5000
uniqueidentifier
データ型を試しましたが、ユーザーIDに適さないIDを生成しました。
誰か提案がありますか?
私の意見で唯一の実行可能な解決策は
ID INT IDENTITY(1,1)
列は、SQL Serverが数値の自動増分を処理できるようにしますだからこれを試してください:
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)
sQL Serverは自動的かつ安全にID
値を増やし、UserID
はUID00000001
、UID00000002
、......など-自動的に、安全に、確実に、重複なし。
更新:列UserID
はcomputed-しかしまだOF COURSEにはデータ型があります。オブジェクトエクスプローラーの結果:
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,
[Name] VARCHAR(50) NOT NULL,
)
marc_sの回答スナップ
Idを手動で追加したい場合、
PadLeft()またはString.Format()メソッド。
string id;
char x='0';
id=id.PadLeft(6, x);
//Six character string id with left 0s e.g 000012
int id;
id=String.Format("{0:000000}",id);
//Integer length of 6 with the id. e.g 000012
次に、UIDを追加できます。
参照: https://docs.Microsoft.com/en-us/sql/t-sql/functions/newid-transact-sql?view=sql-server-2017
-uniqueidentifierデータ型にNEWIDを使用してテーブルを作成します。
CREATE TABLE cust
(
CustomerID uniqueidentifier NOT NULL
DEFAULT newid()、
Company varchar(30)NOT NULL、
ContactName varchar(60)NOT NULL、
Address varchar(30)NOT NULL、
City varchar(30)NOT NULL、
StateProvince varchar(10)NULL、
PostalCode varchar(10)NOT NULL、
CountryRegion varchar(20)NOT NULL、
Telephone varchar(15)NOT NULL、
Fax varchar(15)NULL
);
GO
-custテーブルに5行を挿入します。
カストを挿入
(CustomerID、Company、ContactName、Address、City、StateProvince、
郵便番号、CountryRegion、電話、ファックス)
VALUES
(NEWID()、「Wartian Herkku」、「Pirkko Koskitalo」、「Torikatu 38」、「Oulu」、NULL、
「90110」、「フィンランド」、「981-443655」、「981-443655」)
、(NEWID()、「Wellington Importadora」、「Paula Parente」、「Rua do Mercado、12」、「Resende」、「SP」、
'08737-363'、 'Brasil'、 '(14)555-8122'、 '')
、(NEWID()、「Cactus Comidas para Ilevar」、「Patricio Simpson」、「Cerrito 333」、「Buenos Aires」、NULL、
'1010'、 'Argentina'、 '(1)135-5555'、 '(1)135-4892')
、(NEWID()、「Ernst Handel」、「Roland Mendel」、「Kirchgasse 6」、「Graz」、NULL、
'8010'、 'Austria'、 '7675-3425'、 '7675-3426')
、(NEWID()、「Maison Dewey」、「Catherine Dewey」、「Rue Joseph-Bens 532」、「Bruxelles」、NULL、
「B-1180」、「ベルギー」、「(02)201 24 67」、「(02)201 24 68」);
GO