首先你订阅一个ID变量
DECLARE @ID int;
然后获取这个变量
SELECT @ID = ID from Inserted;
现在你的@ID的值就是前端传递过来的ID值了
1、没谷歌到php可以用的直接方法,不过可以获取批量插入的第一个自增id
2、假设批量插入的数据的自增ID是连续的,则可以通过第一个自增ID获取所有自增ID
3、测试批量插入的数据的自增ID是否是连续的,即插入过程中,单独插入其他数据,批量插入的自增ID是否连续
4、生成批量插入10w条数据的sql
5、navicat打开两个页面,一个是上面的sql,一个是一条单独插入的sql(这条sql的test_id,要大于上面sql里随机数的最大值,方便查看)
6、所以可以使用2中的方式获取批量插入的所有自增ID
你这个是什么数据库
DB2 使用 generated always as identity 来递增的话, 使用下面的语句来查询:
select identity_val_local() from SYSIBMSYSDUMMY1;
SQL Server 使用 identity 来递增的话,使用下面的语句来查询:
查询指定表的 当前序号的数值,以及 增量、与种子数值的函数
SELECT
ident_current('test_create_tab2') as 序号当前数值,
ident_incr('test_create_tab2') as 增量,
ident_seed('test_create_tab2') as 种子数(起始数字)
go
注: test_create_tab2 是表名字
在 C# 中, 可以通过下面的方式, 一次执行2行 SQL 语句, 来完成插入并获取最新ID 的处理逻辑
/// 需要执行的 SQL 语句
/// 需要注意的是
/// 这里实际上定义了2条语句
/// 一条是 INSERT
/// 一条是 SELECT SCOPE_IDENTITY()
private const String INSERT_SQL =
@"INSERT INTO test_SCOPE_IDENTITY (val)
VALUES (@val)
SELECT SCOPE_IDENTITY()";
MySQL 使用 AUTO_INCREMENT 递增的话
使用 select last_insert_id() 来查询
--把相关信息存入临时表,方便在触发器时取到。
IF OBJECT_ID('#AuditWho') IS NOT NULL
DROP TABLE [#AuditWho]
CREATE TABLE [#AuditWho] (PrimaryKey INT,Operater NVARCHAR(50))
INSERT INTO [#AuditWho] VALUES(@Member_nbr,@Operater)
sql update 触发器 获得被update的行的信息 create trigger TgName
on tb
for update
as
if update(recommend)
begin
update tb set commenddate=(getdate()) from tb inner join inserted on tbvlistid=Insertedvlistid
end
关键在于Inserted表
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。1插入 *** 作(Insert)
Inserted表有数据,Deleted表无数据
2删除 *** 作(Delete)
Inserted表无数据,Deleted表有数据
3更新 *** 作(Update)
Inserted表有数据(新数据),Deleted表有数据(旧数据)
以上就是关于在SQL的触发器中怎么获取前端传递过来的ID全部的内容,包括:在SQL的触发器中怎么获取前端传递过来的ID、mysql 批量插入 获取所有自增ID、请问sql如何获取递增id的最新值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)