server的自增主键返回函数 sql_一般问题处理记录--Sql处理 (返回自增主键ID 更新)...

一、Sql Server

(一)、保留几位小数的两种做法

数据库里的 float momey 类型,都会精确到多位小数。但有时候 我们不需要那么精确,例如,只精确到两位有效数字。

解决:

1. 使用 Round() 函数,如 Round(@num,2)  参数 2 表示 保留两位有效数字。

2. 更好的方法是使用 Convert(decimal(18,2),@num) 实现转换,decimal(18,2) 指定要保留的有效数字。

这两个方法有一点不同:使用 Round() 函数,如果 @num 是常数,如 Round(2.3344,2) 则 会在把有效数字后面的 变为0 ,成 2.3300。但 Convert() 函数就不会。

原文链接:https://blog.csdn.net/skyandcode/java/article/details/23523815

(二)、返回自增列ID

SQLServer 返回Insert 操作 自增列ID的方法 有两种:1、 @@identity  2、output inserted.ID (个人使用这种,可以返回添加的列名)     ------  使用  ExecuteScalar 方式获取。

--- 使用 @@identity

Insert into userinfo (username,age,mark) values('','','');select @@identity;--- 使用 output inserted.ID

Insert into userinfo (username,age,mark) output inserted.id values('','','');

二、达梦SQL (Oracle )

(一)、insert 返回当前自增主键ID

进行数据Insert操作时,我们一般需要获取新插入数据的ID,返回操作数据主键ID(int 类型的自增主键ID),达梦数据插入如何返回自增列呢?

达梦SQL 语法与Oracal 语法相似,对于初次接触达梦数据库的人来说,如果熟悉Oracle ,那么一定会事半功倍。

1、Oracle 中返回新增数据主键ID的方法是使用 序列 sequence ,结合 序列sequence 固有属性nextval(下一个值)和currval(当前值)进行返回操 作。

createSEQUENCE SEQ_UserInfo -- 创建 userinfo 表的序列 (一般命名:SEQ_表名)

minvalue1-- 最小值

maxvalue99999999999999-- 最大值(可不设置) 建议主键类型 bigint (long)

startwith 1-- 起始值

incrementby 1-- 增量

cache20  -- 缓存 (达梦:高速缓存)

ORDER;   -- 排序方式:顺序 ORDER /循环 CYCLE

----------------------------------------------------------------

------ALTER SEQUENCE SEQ_UserInfo INCREMENT BY 2 CYCLE NOORDER;

------修改sequence 自增 增量为2 循环无顺序处理。

----------------------------------------------------------------

2、使用时,在新增sql 中使用 nextval 替代 自增主键值,然后再使用 currval 进行新增数据返回值获取。

insert into userinfo(id,username,age,mark) values(SEQ_UserInfo.nextval,'name1',18,'测试添加') ;select SEQ_UserInfo.currval from dual;

3、如果执行添加语句失败:提示 仅当指定列列表,且 SET IDENTITY_INSERT 为ON 时,才能对自增列赋值

SET IDENTITY_INSERT userinfo ON;insert into userinfo(id,username,age,mark) values(SEQ_UserInfo.nextval,'name1',18,'测试添加') ;SET IDENTITY_INSERT userinfo OFF;select SEQ_UserInfo.currval from dual;

如有不合理之处,欢迎指出。欢迎转载,转载请注明出处。

如果您觉得本文对您有帮助,欢迎点击“收藏”按钮!(/:微笑)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值