将表的主键进行序列增加之后可以在数据库层面自动主键id增长

方法如下:先建序列,然后建表关联id主键,然后添加语句,不用考虑id主键

  1. DROP SEQUENCE
  2. IF EXISTS "public"."sp_warehouse_id_seq";
  3.  
  4. CREATE SEQUENCE "public"."sp_warehouse_id_seq" INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1;
  5.  
  6. DROP TABLE
  7. IF EXISTS "public"."sp_warehouse";
  8.  
  9. CREATE TABLE "public"."sp_warehouse" (
  10. "id" NUMERIC (10) DEFAULT nextval(
  11. 'sp_sn_main_id_seq' :: regclass
  12. ) NOT NULL,
  13. "whid" VARCHAR (20) COLLATE "default",
  14. "whname" VARCHAR (50) COLLATE "default",
  15. "province" VARCHAR (20) COLLATE "default",
  16. "city" VARCHAR (20) COLLATE "default",
  17. "district" CHAR (20) COLLATE "default",
  18. "addr" TEXT COLLATE "default"
  19. ) WITH (OIDS = FALSE);
  20.  
  21. INSERT INTO "public"."sp_warehouse" (
  22.  
  23. "whid",
  24. "whname",
  25. "province",
  26. "city",
  27. "district",
  28. "addr"
  29. )
  30. VALUES
  31. (
  32. 'whid1',
  33. 'ads',
  34. 'dsf',
  35. 'sdf',
  36. 'dsf ',
  37. 'sdf'
  38. );

不用序列的话可以在sql中id部分加一句子查询,例如:

  1. <insert id="insertSelective" parameterType="java.util.Map">
  2.  
  3. INSERT INTO sp_sn_main
  4. <trim prefix="(" suffix=")" suffixOverrides=",">
  5. snmasterid,
  6. <if test="snnumber != null">
  7. snnumber,
  8. </if>
  9. <if test="whid != null">
  10. whid,
  11. </if>
  12. <if test="itemnumber != null">
  13. itemnumber,
  14. </if>
  15. <if test="inboundnumber != null">
  16. inboundnumber,
  17. </if>
  18. <if test="outboundnumber != null">
  19. outboundnumber,
  20. </if>
  21. <if test="inbounddate != null">
  22. inbounddate,
  23. </if>
  24. <if test="outbounddate != null">
  25. outbounddate,
  26. </if>
  27. <if test="employeeid != null">
  28. employeeid,
  29. </if>
  30. <if test="status != null">
  31. status,
  32. </if>
  33.  
  34. </trim>
  35. <trim prefix="values (" suffix=")" suffixOverrides=",">
  36.  
  37. (
  38. (
  39. SELECT
  40. MAX (snmasterid)
  41. FROM
  42. sp_sn_main
  43. ) + 1
  44. ),
  45. <if test="snnumber != null">
  46. #{snnumber,jdbcType=VARCHAR},
  47. </if>
  48. <if test="whid != null">
  49. #{whid,jdbcType=VARCHAR},
  50. </if>
  51. <if test="itemnumber != null">
  52. #{itemnumber,jdbcType=VARCHAR},
  53. </if>
  54. <if test="inboundnumber != null">
  55. #{inboundnumber,jdbcType=VARCHAR},
  56. </if>
  57. <if test="outboundnumber != null">
  58. #{outboundnumber,jdbcType=VARCHAR},
  59. </if>
  60. <if test="inbounddate != null">
  61. #{inbounddate,jdbcType=DATE},
  62. </if>
  63. <if test="outbounddate != null">
  64. #{outbounddate,jdbcType=DATE},
  65. </if>
  66. <if test="employeeid != null">
  67. #{employeeid,jdbcType=VARCHAR},
  68. </if>
  69. <if test="status != null">
  70. #{status,jdbcType=VARCHAR},
  71. </if>
  72.  
  73. </trim>
  74. </insert>

【数据库_Postgresql】数据库主键自增长之加序列和不加序列2种方法的更多相关文章

  1. Statement和PreparedStatement的特点 MySQL数据库分页 存取大对象 批处理 获取数据库主键值

    1 Statement和PreparedStatement的特点   a)对于创建和删除表或数据库,我们可以使用executeUpdate(),该方法返回0,表示未影向表中任何记录   b)对于创建和 ...

  2. 数据库主键到底是用自增长(INT)好还是UUID好

    其实针对使用自增长还是UUID,大家讨论最多的就是速度和存储空间,这里我加入了安全性和分布式,具体对比如下: 使用自增长做主键的优点:1.很小的数据存储空间2.性能最好3.容易记忆使用自增长做主键的缺 ...

  3. SQL 数据库主键 ,外键

    主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个 ...

  4. c#生成唯一编号方法记录,可用数据库主键 唯一+有序

    数据库主键目前主要有两种: a.自增数值型 优:占用空间小,插入快,有序对索引友好,易懂 缺:多数据库迁移会有重复键值问题,有可能爆表 b.GUID 优:多数据库唯一 缺:占用空间大,无序对索引不友好 ...

  5. 使用Hashids来保护你的数据库主键

    为什么要保护数据库主键? 数据库主键一般是有序自增主键,极易被爬虫抓取数据,作为应用开发者,这是不应该的,你辛辛苦苦收集的数据转眼之间被其他人给抓取了,是不是很大的损失? Hashids的介绍 gen ...

  6. 数据库主键跟外键+修改mysql的密码

    update myspl.user set password=PASSWORD(设置的密码)  where user='root'; 如果修改错误:先执行use mysple;再重复上面的代码. 一. ...

  7. 数据库主键ID生成策略

    前言: 系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,下面介绍一些常见的ID生成策略. Sequence ID UUID GUID COMB Snowflake 最开始的自增ID为了实现分库 ...

  8. C#连接mysql数据库插入数据后获取自增长主键ID值

    From: http://blog.csdn.net/zbc496218/article/details/51082983 MySqlConnection conn = new MySqlConnec ...

  9. MySQL数据库主键设计原则

    目录 1. 主键定义... 5 2. 主键设计原则... 5 2.1 确保主键的无意义性... 5 2.2 采用整型主键... 5 2.3 减少主键的变动... 5 2.4 避免重复使用主键... 6 ...

随机推荐

  1. 微信小程序点击按钮,修改状态

    WXML中: <view wx:if="{{orderstate}} = '待送检' " data-no="{{orderstate}}" bindtap ...

  2. Microsoft .NET Framework 4 安装 1603错误的解决

    首先找到  C:\Windows\SoftwareDistribution\Download"这个文件夹,把里面的东西全删除了,然后把你更新失败的 NET Framework 4卸载了,然后 ...

  3. git clone的时候报error: RPC failed; result=18错误

    因业务需求,需要把内网gitlab仓库的地址对外网访问,在gitlab前端配置了一个nginx代理服务器,来实现需求,可以在git clone的时候报error: RPC failed错误 [root ...

  4. 新技能get,使用PHPStorm的deployment工具

    1. 工具栏 Tools - Deployment - Configuration 2. 添加一个服务端的配置信息 type 类型可以选择:FTP.local等. 填完信息别忘了点"Test ...

  5. 【JUC源码解析】CyclicBarrier

    简介 CyclicBarrier,一个同步器,允许多个线程相互等待,直到达到一个公共屏障点. 概述 CyclicBarrier支持一个可选的 Runnable 命令,在一组线程中的最后一个线程到达之后 ...

  6. Python接口测试实战4(下) - 框架完善:用例基类,用例标签,重新运行上次失败用例

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  7. loadrunner-录制脚本,设置代理,参数化,校验点,关联

    详细记录一个脚本制作过程相关知识点 制作脚本 因为要做网页所以选择web协议,根据实际需要选择 选择浏览器地址,打开的网页网址,脚本存储地址以及初始化脚本,初始化脚本的目的是执行用例后不再执行此脚本中 ...

  8. Unity ScriptableObject自定义属性显示

    1. 继承Editor,重写OnInspectorGUI方法 Editor官方文档 需求 将TestClass中intData属性和stringData按指定格式显示. 实现 定义一个测试类TestC ...

  9. 面向对象编程(OOP)思想小结

    Concepts 类(class):对我们要解决问题的抽象,比如建造房子的蓝图:但实现机制上来讲,类是根据蓝图构建而成的,存储在内存中的,用来表示对象的数据. 对象(object):根据类构建的实体, ...

  10. Java fluent风格(转载)

    转载:java Fluent风格 一.我们先写一个通常的,即不使用fluent风格 1.实体类 package com.xbq.demo.stu; /** * @ClassName: Student ...