对有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')方式

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



So blenden Sie Text vor jedem Klick in PowerPoint aus Wenn Sie möchten, dass Text angezeigt wird, wenn Sie irgendwo auf eine PowerPoint-Folie klicken, ist die Einrichtung schnell und einfach. So blenden Sie Text aus, bevor Sie in PowerPoint auf eine Schaltfläche klicken: Öffnen Sie Ihr PowerPoint-Dokument und klicken Sie auf das Menü „Einfügen“. Klicken Sie auf Neue Folie. Wählen Sie „Leer“ oder eine der anderen Voreinstellungen. Klicken Sie immer noch im Menü „Einfügen“ auf „Textfeld“. Ziehen Sie ein Textfeld auf die Folie. Klicken Sie auf das Textfeld und geben Sie Ihre ein

Was ist Identität in SQL? In SQL ist Identität ein spezieller Datentyp, der zum Generieren automatisch inkrementierender Zahlen verwendet wird. Er wird häufig verwendet, um jede Datenzeile in einer Tabelle eindeutig zu identifizieren. Die Spalte „Identität“ wird oft in Verbindung mit der Primärschlüsselspalte verwendet, um sicherzustellen, dass jeder Datensatz eine eindeutige Kennung hat. In diesem Artikel wird die Verwendung von Identity detailliert beschrieben und es werden einige praktische Codebeispiele aufgeführt. Die grundlegende Möglichkeit, Identity zu verwenden, besteht darin, Identit beim Erstellen einer Tabelle zu verwenden.

So schreiben Sie Trigger in MySQL mit PHP MySQL ist ein häufig verwendetes relationales Datenbankverwaltungssystem und PHP ist eine beliebte serverseitige Skriptsprache. Die Verwendung von PHP zum Schreiben von Triggern in MySQL kann uns dabei helfen, automatisierte Datenbankoperationen zu realisieren. In diesem Artikel wird erläutert, wie Sie mit PHP MySQL-Trigger schreiben, und es werden spezifische Codebeispiele bereitgestellt. Stellen Sie vor dem Start sicher, dass MySQL und PHP installiert sind und die entsprechenden Datenbanktabellen erstellt wurden. 1. Erstellen Sie PHP-Dateien und -Daten

Der Unterschied zwischen insertignore-, insert- und replacement-Anweisungen ist bereits vorhanden oder nicht. ;replace Ersetzen und einfügen replacementintonames(name,age)values("Xiao Ming", 25); Tabellenanforderungen: PrimaryKey oder eindeutiges Indexergebnis: Die Tabellen-ID wird automatisch erhöht. Testcode erstellt Tabelle

In der Oracle-Datenbank können Sie die CREATE TRIGGER-Anweisung verwenden, um Trigger hinzuzufügen. Ein Trigger ist ein Datenbankobjekt, das ein oder mehrere Ereignisse in einer Datenbanktabelle definieren und automatisch entsprechende Aktionen ausführen kann, wenn das Ereignis eintritt.

Verwenden Sie die Funktion StringBuilder.insert(), um eine Zeichenfolge an einer bestimmten Position einzufügen. StringBuilder ist eine Klasse zur Verarbeitung variabler Zeichenfolgen in Java. Sie bietet verschiedene Methoden zum Betreiben von Zeichenfolgen Angegebene Positionen Eine der gebräuchlichsten Methoden zum positionellen Einfügen von Zeichenfolgen. In diesem Artikel stellen wir vor, wie man mit der Funktion insert() einen String an einer bestimmten Position einfügt, und geben entsprechende Codebeispiele. einfügen()

MySQL-Trigger erfolgen auf Zeilenebene. Gemäß SQL-Standards können Trigger in zwei Typen unterteilt werden: 1. Trigger auf Zeilenebene, die einmal für jede geänderte Datenzeile aktiviert werden. Wenn eine Anweisung 100 Datenzeilen einfügt, wird der Trigger 100 Mal aufgerufen . Trigger auf Anweisungsebene Der Trigger wird einmal für jede Anweisung aktiviert. Eine Anweisung, die 100 Datenzeilen einfügt, ruft den Trigger nur einmal auf. MySQL unterstützt nur Trigger auf Zeilenebene, keine Trigger auf vorbereiteter Anweisungsebene.

So schreiben Sie benutzerdefinierte Trigger und gespeicherte Prozeduren in MySQL mit PHP. Einführung: Bei der Entwicklung von Anwendungen müssen wir häufig einige Vorgänge auf Datenbankebene ausführen, z. B. das Einfügen, Aktualisieren oder Löschen von Daten. MySQL ist ein weit verbreitetes relationales Datenbankverwaltungssystem und PHP ist eine beliebte serverseitige Skriptsprache. In diesem Artikel wird erläutert, wie Sie mit PHP benutzerdefinierte Trigger und gespeicherte Prozeduren in MySQL schreiben, und es werden spezifische Codebeispiele bereitgestellt. 1. Was sind Trigger und gespeicherte Prozedur-Trigger (Trigg
