Saya punya kode ini:
string insertSql =
"INSERT INTO aspnet_GameProfiles(UserId,GameId) VALUES(@UserId, @GameId)";
using (SqlConnection myConnection = new SqlConnection(myConnectionString))
{
myConnection.Open();
SqlCommand myCommand = new SqlCommand(insertSql, myConnection);
myCommand.Parameters.AddWithValue("@UserId", newUserId);
myCommand.Parameters.AddWithValue("@GameId", newGameId);
myCommand.ExecuteNonQuery();
myConnection.Close();
}
Ketika saya memasukkan ke dalam tabel ini, saya memiliki kolom kunci primer int auto_increment disebut GamesProfileId
, bagaimana saya bisa mendapatkan yang terakhir dimasukkan setelah ini sehingga saya bisa menggunakan id untuk memasukkan ke dalam tabel lain?
c#
sql
sql-server
anthonypliu
sumber
sumber
OUTPUT INSERTED.ID
bisa menimbulkan masalah jika ada pemicu aktif di atas mejaAnda dapat membuat perintah dengan
CommandText
sama dengandan jalankan
int id = (int)command.ExecuteScalar
.Ini artikel MSDN akan memberi Anda beberapa teknik tambahan.
sumber
Vil ini bekerja :)
sumber
Saya memiliki kebutuhan yang sama dan menemukan jawaban ini ..
Ini menciptakan catatan di tabel perusahaan (comp), itu mengambil ID otomatis yang dibuat di meja perusahaan dan menjatuhkannya ke dalam tabel Staf (staf) sehingga 2 tabel dapat dihubungkan, BANYAK staf ke SATU perusahaan. Ini berfungsi pada DB SQL 2008 saya, harus bekerja pada SQL 2005 dan di atas.
===========================
- ' @recID' digunakan untuk menyimpan nomor ID yang dibuat secara otomatis oleh Perusahaan yang akan kami ambil
- Baris di atas digunakan untuk membuat tabel tempory untuk menampung nomor ID yang dibuat secara otomatis untuk digunakan nanti. Hanya memiliki satu bidang 'tempID' dan tipe INT -nya sama dengan '@recID' .
- ' OUTPUT dimasukkan. 'Baris di atas digunakan untuk mengambil data dari bidang apa pun dalam catatan yang dibuatnya saat ini. Data yang kami inginkan adalah nomor autonumber. Jadi pastikan ia mengatakan nama bidang yang benar untuk tabel Anda, milik saya adalah 'comp_id' . Ini kemudian jatuh ke tabel tempory yang kita buat sebelumnya.
- Baris di atas digunakan untuk mencari tabel tempory yang kita buat sebelumnya di mana ID yang kita butuhkan disimpan. Karena hanya ada satu catatan di tabel tempory ini, dan hanya satu bidang, itu hanya akan memilih nomor ID yang Anda butuhkan dan memasukkannya ke ' @recID '. ' @recID ' sekarang memiliki nomor ID yang Anda inginkan dan Anda dapat menggunakannya sesuka Anda seperti saya telah menggunakannya di bawah ini.
- Jadi begitulah. Anda benar-benar dapat mengambil apa yang Anda inginkan di baris 'OUTPUT dimasukkan. ApaEverFieldNameYouWant' dan buat bidang apa yang Anda inginkan di tabel tempory Anda dan akses untuk menggunakan apa pun yang Anda inginkan.
Saya mencari sesuatu seperti ini selama berabad-abad, dengan rincian terperinci ini, saya harap ini membantu.
sumber
Dalam SQL murni, pernyataan utama kools seperti:
Kurung kotak mendefinisikan simbs tabel dan kemudian kolom En dan ID, kurung bulat mendefinisikan enumerasi kolom yang akan dimulai dan kemudian nilai untuk kolom, dalam kasus saya satu kolom dan satu nilai. Apostrof melampirkan string
Saya akan menjelaskan kepada Anda pendekatan saya:
Mungkin tidak mudah untuk dipahami tetapi saya berharap berguna untuk mendapatkan gambaran besar menggunakan id yang dimasukkan terakhir. Tentu saja ada alternatif pendekatan yang lebih mudah. Tapi aku punya alasan untuk menyimpan milikku. Fungsi terkait tidak termasuk, hanya nama dan nama parameternya.
Saya menggunakan metode ini untuk kecerdasan buatan medis Metode memeriksa apakah string yang diinginkan ada di tabel pusat (1). Jika string yang diinginkan tidak ada di tabel pusat "simbs", atau jika duplikat diperbolehkan, string yang diinginkan ditambahkan ke tabel pusat "simbs" (2). Id yang diinertasi terakhir digunakan untuk membuat tabel terkait (3).
sumber
Saya mencoba di atas tetapi mereka tidak berhasil, saya menemukan pemikiran ini, itu bekerja dengan baik untuk saya.
Lebih sedikit kodenya dan mudah dimasukkan.
Semoga ini bisa membantu seseorang.
sumber
Anda juga dapat menggunakan panggilan ke SCOPE_IDENTITY di SQL Server.
sumber
sumber
Ada berbagai macam cara untuk mendapatkan ID yang Terakhir Dimasukkan tetapi cara termudah yang saya temukan adalah dengan hanya mengambilnya dari TableAdapter di DataSet seperti:
Semoga ini membantu ...
sumber
Setelah memasukkan baris apa pun, Anda bisa mendapatkan id yang dimasukkan terakhir dengan baris permintaan di bawah ini.
INSERT INTO aspnet_GameProfiles (UserId, GameId) VALUES (@UserId, @GameId); SELECT @@ IDENTITY
sumber
Gunakan SELECT SCOPE_IDENTITY () dalam kueri
sumber
Sesudah ini:
Jalankan ini
Itu akan berhasil
sumber
INSERT INTO aspnet_GameProfiles (UserId, GameId) VALUES (@UserId, @GameId) "; maka Anda bisa mengakses id terakhir dengan memesan tabel dengan cara desc.
PILIH TOP 1 UserId DARI aspnet_GameProfiles ORDER BY UserId DESC.
sumber
sumber