Django使用save新增一条数据之后如何获取自增id

Django使用save新增一条数据之后如何获取自增id,第1张

back = modelsBackobjectsget(bookname=bookname)    # 查询你保存的那本书的记录
print(backid)    # 打印出你要的新增记录的id值

SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY
IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。
IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。
SCOPE_IDENTITY 和 @@IDENTITY
返回在当前会话中的任何表内所生成的最后一个标识值。
但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY
不受限于特定的作用域。
例如,有两个表 T1 和 T2,并且在 T1 上定义了 INSERT 触发器
当将某行插入 T1 时,触发器激发,并在 T2 中插入一行。
该方案演示了两个作用域:在 T1 上的插入,以及在 T2 通过触发器的插入。
假设 T1 和 T2 都有标识列,@@IDENTITY 和 SCOPE_IDENTITY 将在 T1 上的
INSERT 语句结束后返回不同的值。
@@IDENTITY 将返回在当前会话中的任何作用域内插入的最后一个标识列的值。
这是在 T2 中插入的值。
SCOPE_IDENTITY() 将返回在 T1 中插入的 IDENTITY 值。
这是在同一个作用域内发生的最后的插入。
如果在任何 INSERT 语句作用于作用域中的标识列之前调用 SCOPE_IDENTITY()
函数,则该函数将返回 Null。
如果语句和事务失败,它们会更改表的当前标识,从而使标识列中的值出现不连贯现象。
即使未提交试图向表中插入值的事务,也永远无法回滚标识值。
例如,如果因 IGNORE_DUP_KEY 冲突而导致 INSERT
语句失败,表的当前标识值仍然会增加。

很多时候数据库中表的主键都是自增id,
而在连续插入数据时,需要前一条的自增id时候,可以使用PHP中的
mysql_insert_id();函数
如果我的回答没能帮助您,请继续追问。
您也可以向我们团队发出请求,

   在MSSQL2000中提供了两个函数(ident_current,scope_identity)
 
      当你插入记录后,可以调用函数:
         调用方式举列:print ident_current('table') ,这样就可以得到 新的identity值。
      或者:print scope_identity() '这将获得在当前存储过程,触发器等其他程序创建的最新记录的identity值 这个的好处就是改进了@@identity的不足全局变量@@identity有一个问题,当对一张表执行insert时,如果该表有触发器程序在执行插入 *** 作,然后,接着在另一张表中插入记录,这样返回@@identity值就是第二张表的identity值。
     备注:以上用法在MSSQL2000或以上版本均可用,如果是比较底的版本需要自己另写存储过程来处理。这里就不写了,因为我认为现在用2000以下的版本的人太少了。至于我恐怕没有机会用了,呵呵!
 
 
     测试:
           1新建一个表  TBLINDEDITY
                     CREATE TABLE [TBLINDEDITY] (
                               [id] [int] IDENTITY (1, 1) NOT NULL ,
                               [name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL 
                    ) ON [PRIMARY]
                    GO
            2插入3条数据
                    insert into TBLINDEDITY values('dong')
                    insert into TBLINDEDITY values('chao')
                    insert into TBLINDEDITY values('hui')
            3用这个函数测试一下
                    print ident_current('TBLINDEDITY')
            4结果:
                    3
 
      结论:测试成功!这个问题已经尘埃落地

怎么在thinkphp添加数据时获取自动增长的id?

下面是TP5的方法,TP3的在添加后变量直接就获取了。添加数据后如果需要返回新增数据的自增主键,可以使用 getLastInsID 方法:
Db::name('user')->insert($data);

$userId = Db::name('user')->getLastInsID();或者直接使用 insertGetId 方法新增数据并返回主键值:

Db::name('user')->insertGetId($data);

ThinkPHP

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP 开发框架,遵循 Apache2 开源协议发布,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。

基本特性

简单易用的MVC模式                                                                         

模型(M):模型的定义由Model类来完成。Model类位于项目目录下面的LibModel目录。

控制器(C):应用控制器(核心控制器)和Action控制器都承担了控制器的角色,区别在于Action控制器完成业务过程,而应用控制器(App类)负责调度控制。Action控制器位于项目目录下面的LibAction目录。

视图(V):模板的实现是和框架无关的,做到了100%分离,可以独立预览和制作。模板目录位于项目目录下面的Tpl目录。

2独创的核心编译和二分法项目编译机制

ThinkTemplate是一个使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。

ID 如果是自动增加的话,是不用管的,你只要插入name 与 passwd,id就会相应的加一条。 语句是:insert into user(name,passwd) values ('张三','123');

还要给它一个name值,这样,便成了数组。可以使用documentgetElementsByName()
注意,这是个数组。
再根据你的rowlen来定其值。比如:var dog=
则其自id,可这般:alert(dogid)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13365253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-22
下一篇 2023-07-22

发表评论

登录后才能评论

评论列表(0条)

保存