これが私のテーブルです。
Ticket(id int auto_increment,name varchar(50));
このテーブルに挿入した後、IDと名前をメールに送信したいのですが、最後に挿入された値を取得するにはどうすればよいですか。
これを解決するのに役立ちます...
これが私のテーブルです。
Ticket(id int auto_increment,name varchar(50));
このテーブルに挿入した後、IDと名前をメールに送信したいのですが、最後に挿入された値を取得するにはどうすればよいですか。
これを解決するのに役立ちます...
調べてください:Scope_identity
SCOPE_IDENTITY()
そのテーブルからIdentityPropertyを持っているテーブルは、最後に挿入されたレコードIDを取得できます。
SELECT SCOPE_IDENTITY()
また
しかし、これは安全な手法ではありません。
SELECT MAX(Id) FROM Ticket
また
これも安全な手法ではありません。
SELECT TOP 1 Id FROM Ticket ORDER BY Id DESC
SCOPE_IDENTITY()
テーブルに最後に挿入された主キーの値を取得するために使用する必要があります。私はそれがID
値であるべきだと思います。入手したら、SELECT
このIDを使用してください。
@@IDENTITY
いくつかの違いもありますが、どちらかを使用すると、値が不正確になる可能性があります。
これらの詳細な記事で、より多くの洞察、それらの使用方法の詳細な説明、それらが異なる理由、およびいくつかのデモコードを確認してください。
2008 R2 Service Pack1より前のSQLServerの場合(リンク):
SCOPE_IDENTITY()および@@ IDENTITYを使用すると、誤った値を受け取る場合があります
その場合、OUTPUT句が最も安全なメカニズムです。
DECLARE @InsertedRows AS TABLE (Id int)
DECLARE @NewId AS INT
INSERT INTO HumanResources.Employees
( /* column names */)
OUTPUT Inserted.Id INTO @InsertedRows
VALUES (/* column values */)
SELECT @NewId = Id FROM @InsertedRows
次のような自動インクリメントフィールドをテーブルに追加します。インデックス(INT、AUTO INCREEMENT)次に、挿入または実行される操作の前にc max(index)を取得して最後のレコードを取得します。