• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

2022-10-12 达梦7 设置主键自增

武飞扬头像
不爱吃奶昔
帮助1

达梦7 设置主键自增

设置是否允许将显式值插入表的自增列中。

语法格式

SET IDENTITY_INSERT [<模式名>.]<表名> ON | OFF;

创建表时使用identity(1,1)设置主键自增,一个表只能有一个自增列

CREATE TABLE "NBFG"."DATA_MODEL_SPEED_POWER_NEW"
(
"ID" INT IDENTITY(1, 1) NOT NULL,
"FAN_MODEL" VARCHAR(30) NOT NULL,
"WIND_SPEED" FLOAT NOT NULL,
"WIND_POWER" FLOAT NOT NULL,
"DELETED" INT DEFAULT 0 NOT NULL,
"STORAGE_TIME" DATETIME(6) DEFAULT CURRENT_TIMESTAMP(),
"MODIFIED_TIME" DATETIME(6),
CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;

COMMENT ON TABLE "NBFG"."DATA_MODEL_SPEED_POWER_NEW" IS '风机功率曲线';
COMMENT ON COLUMN "NBFG"."DATA_MODEL_SPEED_POWER_NEW"."DELETED" IS '0未删除 1已删除';
COMMENT ON COLUMN "NBFG"."DATA_MODEL_SPEED_POWER_NEW"."FAN_MODEL" IS '风机型号';
COMMENT ON COLUMN "NBFG"."DATA_MODEL_SPEED_POWER_NEW"."ID" IS '风机型号自增ID';
COMMENT ON COLUMN "NBFG"."DATA_MODEL_SPEED_POWER_NEW"."MODIFIED_TIME" IS '修改时间';
COMMENT ON COLUMN "NBFG"."DATA_MODEL_SPEED_POWER_NEW"."STORAGE_TIME" IS '入库时间';
COMMENT ON COLUMN "NBFG"."DATA_MODEL_SPEED_POWER_NEW"."WIND_POWER" IS '功率';
COMMENT ON COLUMN "NBFG"."DATA_MODEL_SPEED_POWER_NEW"."WIND_SPEED" IS '风速';
学新通

使用说明

  1. IDENTITY_INSERT 属性的默认值为 OFF。SET IDENTITY_INSERT 的设置是在执行或运行时进行的。当一个连接结束,IDENTITY_INSERT 属性将被自动还原为 OFF;
  2. DM 要求一个会话连接中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON,当设置一个新的表 IDENTITY_INSERT 属性设置为 ON 时,之前已经设置为 ON 的表会自动还原为 OFF。当一个表的 IDENTITY_INSERT 属性被设置为 ON 时,该表中的自动增量列的值由用户指定。如果插入值大于表的当前标识值(自增列当前值),则 DM 自动将新插入值作为当前标识值使用,即改变该表的自增列当前值;否则,将不影响该自增列当前值;
  3. 当设置一个表的 IDENTITY_INSERT 属性为 OFF 时,新插入行中自增列的当前值由系统自动生成,用户将无法指定;
  4. 自增列一经插入,无法修改;
  5. 手动插入自增列,除了将 IDENTITY_INSERT 设置为 ON,还要求在插入列表中明确指定待插入的自增列列名。插入方式与非 IDENTITY 表是完全一样的。如果插入时,既不指定自增列名也不给自增列赋值,则新插入行中自增列的当前值由系统自动生成。

举例说明

SET IDENTITY_INSERT 的使用

  1. PERSON_TYPE表中的PERSON_TYPEID列是自增列,目前拥有的数据如下所示。
PERSON_TYPEID NAME
1 采购经理
2 采购代表
3 销售经理
4 销售代表
  1. 在该表中插入数据,自增列的值由系统自动生成。
INSERT INTO PERSON.PERSON_TYPE(NAME) VALUES('销售总监'); 

INSERT INTO PERSON.PERSON_TYPE(NAME) VALUES('人力资源部经理'); 

插入结果如下所示:

PERSON_TYPEID NAME
1 采购经理
2 采购代表
3 销售经理
4 销售代表
5 销售总监
6 人力资源部经理
  1. 当插入数据并且要指定自增列的值时,必须要通过语句将 IDENTITY_INSERT 设置为 ON 时,插入语句中必须指定 PERSON_TYPEID 中要插入的列。例如:
SET IDENTITY_INSERT PERSON.PERSON_TYPE ON; 

INSERT INTO PERSON.PERSON_TYPE(PERSON_TYPEID, NAME) VALUES( 8, '广告部经理'); 

INSERT INTO PERSON.PERSON_TYPE(PERSON_TYPEID, NAME) VALUES( 9, '财务部经理'); 

插入结果如下所示:

PERSON_TYPEID NAME
1 采购经理
2 采购代表
3 销售经理
4 销售代表
5 销售总监
6 人力资源部经理
8 广告部经理
9 财务部经理
  1. 不允许用户修改自增列的值。
UPDATE PERSON.PERSON_TYPE SET PERSON_TYPEID = 9 WHERE NAME = '广告部经理'; 

修改失败。对于自增列,不允许 UPDATE 操作。

  1. 还原 IDENTITY_INSERT 属性。
SET IDENTITY_INSERT PERSON.PERSON_TYPE OFF;  
  1. 插入后再次查询。注意观察自增列当前值的变化。
INSERT INTO PERSON.PERSON_TYPE(NAME) VALUES('市场总监'); 
PERSON_TYPEID NAME
1 采购经理
2 采购代表
3 销售经理
4 销售代表
5 销售总监
6 人力资源部经理
8 广告部经理
9 财务部经理
10 市场总监

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgebijg
系列文章
更多 icon
同类精品
更多 icon
继续加载