2016-11-28 12 views
0
CREATE TABLE DUser (
[ID]   INT   NOT NULL, [DUser_Id] VARCHAR(45) NULL, 
[Name]   VARCHAR (70) NOT NULL, 
[DOB]   DATE   NOT NULL, 
[Password]  VARCHAR (30) NOT NULL, 
[Email]  VARCHAR (70) NOT NULL, 
[Phone_Number] INT   NOT NULL, 
[Gender]  VARCHAR (6) NOT NULL, PRIMARY KEY CLUSTERED ([ID] ASC)); 


Create TRIGGER DUser_IDColumn  
ON DUser  
AFTER INSERT 
AS 
BEGIN 
SET NOCOUNT ON; 

UPDATE duserid SET  
DUser_ID = 'U' + LEFT('0000' + CAST(inserted.ID AS VARCHAR(10)), 5) FROM  DUser duserid 

INNER JOIN inserted 

ON duserid.ID = inserted.ID 

END GO 

IDはU00003から開始したいときにU00000から開始します。事前定義された値があります。 お願いします。私の自動インクリメントが1で始まらない

When I Create an user account

+1

ようになりますタイトルは、あなたの自動インクリメントが '1'を開始することを期待示唆しています。スクリーンショットは「0」から始まり、あなたの質問では、あなたは「3」から始めることを望んでいると述べています...それはどれですか? –

+0

また、挿入トリガーは...ちょっと奇妙です。 'ID'と' DUser_Id'が同期していると思いますか?はいの場合:それを追跡するのを邪魔するのはなぜですか?そうでない場合:何が問題なのですか?なぜあなたのデータベースをデ・ノーマライズするのですか? –

+0

もう一つは、スクリーンショットで気づいたからです。**あなたのデータベースにパスワードを保存しないでください!**。ハッシュと塩を保管してください** **実際のパスワードは決してありません! –

答えて

1

あなたの投稿コードからALTER声明

ALTER TABLE DUser AUTO_INCREMENT = 1 

を使用して、以下のようなあなたのAUTO-INCREMENTを再シードする必要があるように見える、私はそれがすべてでautoincrementの列だと表示されません。それから、それが1から始まると期待できる方法はありません。カスタムID列のようです。

CREATE TABLE DUser (
[ID]   INT   NOT NULL 
+0

どうすれば変更できますか?新しいものが作成されるたびに、DUser_IDを自動的にインクリメントしたいと思います。現在、私はU00001、U00002の2人の事前定義されたユーザーを持っています。私が作成すると、U00003の代わりにU00000になります。 –

+0

@PercyPig、 'ALTER'文を使用します。スタックオーバーフローで検索...既存の回答がたくさんあります。 – Rahul

0

あなたは、あなたの中にテーブルを作成するスクリプト "DUserは"

`AUTO_INCREMENT=3` 

のようなものを置くことができませんか? だから、

CREATE TABLE DUser (
[ID]   INT   NOT NULL, 
[DUser_Id] VARCHAR(45) NULL, 
[Name]   VARCHAR (70) NOT NULL, 
[DOB]   DATE   NOT NULL, 
[Password]  VARCHAR (30) NOT NULL, 
[Email]  VARCHAR (70) NOT NULL, 
[Phone_Number] INT   NOT NULL, 
[Gender]  VARCHAR (6) NOT NULL, PRIMARY KEY CLUSTERED ([ID] ASC)) 
ENGINE=InnoDB AUTO_INCREMENT=3; 
関連する問題