对有insert触发器表取IDENTITY值时发现的问题
赶快查了下msdn,原来@@IDENTITY还有这么多讲究
问题是这样的:T1表上有一个INSERT的触发器,在插入数据的时候,会自动往T2表里面插一条记录
这样当我在T1表上插入新的数据时,取@@IDENTITY的时候,返回的id值是T2表里面的新记录的值
赶快查了下msdn,原来@@IDENTITY还有这么多讲究:
在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL。如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值。如果语句触发了一个或多个触发器,该触发器又执行了生成标识值的插入操作,那么,在语句执行后立即调用 @@IDENTITY 将返回触发器生成的最后一个标识值。如果对包含标识列的表执行插入操作后触发了触发器,并且触发器对另一个没有标识列的表执行了插入操作,则 @@IDENTITY 将返回第一次插入的标识值。出现 INSERT 或 SELECT INTO 语句失败或大容量复制失败,或者事务被回滚的情况时,@@IDENTITY 值不会恢复为以前的设置。
如果语句和事务失败,它们会更改表的当前标识,从而使标识列中的值出现不连贯现象。即使未提交试图向表中插入值的事务,也永远无法回滚标识值。例如,如果因 IGNORE_DUP_KEY 冲突而导致 INSERT 语句失败,表的当前标识值仍然会增加。
@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 是相似的函数,因为他们都返回插入到表的 IDENTITY 列的最后一个值。
@@IDENTITY 和 SCOPE_IDENTITY 可以返回当前会话中的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。
IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 可以返回任何会话和任何作用域中为特定表生成的标识值。
@@IDENTITY 函数的作用域是执行该函数的本地服务器上的当前会话。此函数不能应用于远程或链接服务器。若要获得其他服务器上的标识值,请在远程服务器或链接服务器上执行存储过程,并使(在远程或链接服务器的环境中执行的)该存储过程收集标识值,并将其返回本地服务器上的发出调用的连接。
所以对多个表进行操作的时候,最好用
SELECT SCOPE_IDENTITY()和SELECT IDENT_CURRENT(‘T1')方式

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah Identity dalam SQL? Contoh kod khusus diperlukan Dalam SQL, Identity ialah jenis data khas yang digunakan untuk menjana nombor penambahan automatik. Ia sering digunakan untuk mengenal pasti setiap baris data dalam jadual. Lajur Identiti sering digunakan bersama dengan lajur kunci utama untuk memastikan setiap rekod mempunyai pengecam unik. Artikel ini akan memperincikan cara menggunakan Identiti dan beberapa contoh kod praktikal. Cara asas untuk menggunakan Identity ialah menggunakan Identit semasa membuat jadual.

Cara Menyembunyikan Teks Sebelum Sebarang Klik dalam PowerPoint Jika anda mahu teks muncul apabila anda mengklik di mana-mana pada slaid PowerPoint, menyediakannya adalah pantas dan mudah. Untuk menyembunyikan teks sebelum mengklik mana-mana butang dalam PowerPoint: Buka dokumen PowerPoint anda dan klik menu Sisipkan. Klik pada Slaid Baru. Pilih Kosong atau salah satu daripada pratetap lain. Masih dalam menu Sisip, klik Kotak Teks. Seret kotak teks ke slaid. Klik kotak teks dan masukkan anda

Perbezaan antara arahan insertignore, masukkan dan ganti sudah wujud atau tidak Contoh ralat sisipan (nama,umur)nilai("Xiaoming",23);insertignore mengabaikan nilai insertignoreintonames("Xiaoming",24) ;ganti Ganti dan masukkan nilai gantiintonames(nama,umur)("Xiao Ming", 25); Keperluan jadual: PrimaryKey, atau hasil indeks unik: id jadual akan ditambah secara automatik

Dalam pangkalan data Oracle, anda boleh menggunakan pernyataan CREATE TRIGGER untuk menambah pencetus. Pencetus ialah objek pangkalan data yang boleh menentukan satu atau lebih peristiwa pada jadual pangkalan data dan secara automatik melakukan tindakan yang sepadan apabila peristiwa itu berlaku.

Cara menggunakan pencetus MySQL untuk melaksanakan pengarkiban data automatik Pengenalan: Dalam bidang pengurusan data moden, pengarkiban automatik dan pembersihan data adalah keperluan penting dan biasa. Apabila jumlah data meningkat, mengekalkan data sejarah yang lengkap akan menduduki sumber storan yang berlebihan dan mengurangkan prestasi pertanyaan. Pencetus MySQL menyediakan cara yang berkesan untuk mencapai keperluan ini. Artikel ini akan memperkenalkan cara menggunakan pencetus MySQL untuk mencapai pengarkiban data automatik. 1. Apakah pencetus MySQL? Pencetus MySQL ialah sejenis memori yang istimewa.

Gunakan fungsi StringBuilder.insert() java untuk memasukkan rentetan pada kedudukan tertentu StringBuilder ialah kelas dalam Java yang digunakan untuk mengendalikan rentetan pembolehubah. Fungsi insert() digunakan untuk Salah satu kaedah biasa memasukkan rentetan secara kedudukan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan fungsi insert() untuk memasukkan rentetan pada kedudukan tertentu dan memberikan contoh kod yang sepadan. masukkan()

Pencetus MySQL adalah peringkat baris. Menurut piawaian SQL, pencetus boleh dibahagikan kepada dua jenis: 1. Pencetus peringkat baris, yang akan diaktifkan sekali untuk setiap baris data yang diubah suai Jika pernyataan memasukkan 100 baris data, pencetus akan dipanggil 100 kali; . Pencetus peringkat penyata Pencetus diaktifkan sekali untuk setiap penyata Penyataan yang memasukkan 100 baris data hanya akan memanggil pencetus sekali. MySQL hanya menyokong pencetus peringkat baris, bukan pencetus peringkat pernyataan yang disediakan.

Dalam era pembangunan web hari ini, pengurusan jadual yang berkesan dan cekap telah menjadi sangat penting, terutamanya apabila berurusan dengan aplikasi web berat data. Keupayaan untuk menambah, mengedit dan memadam baris secara dinamik daripada jadual boleh meningkatkan pengalaman pengguna dengan ketara dan menjadikan aplikasi lebih interaktif. Cara yang berkesan untuk mencapai ini adalah dengan memanfaatkan kuasa jQuery. jQuery menyediakan banyak ciri untuk membantu pembangun melaksanakan operasi. Baris jadual Baris jadual ialah koleksi data yang saling berkaitan, diwakili oleh elemen dalam HTML. Ia digunakan untuk mengumpulkan sel (diwakili oleh unsur) dalam jadual. Setiap elemen digunakan untuk menentukan baris dalam jadual, dan untuk jadual berbilang atribut, ia biasanya mengandungi satu atau lebih elemen. Syntax$(selector).append(co
