2022-10-12 达梦7 设置主键自增
达梦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 '风速';
使用说明
- IDENTITY_INSERT 属性的默认值为 OFF。SET IDENTITY_INSERT 的设置是在执行或运行时进行的。当一个连接结束,IDENTITY_INSERT 属性将被自动还原为 OFF;
- DM 要求一个会话连接中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON,当设置一个新的表 IDENTITY_INSERT 属性设置为 ON 时,之前已经设置为 ON 的表会自动还原为 OFF。当一个表的 IDENTITY_INSERT 属性被设置为 ON 时,该表中的自动增量列的值由用户指定。如果插入值大于表的当前标识值(自增列当前值),则 DM 自动将新插入值作为当前标识值使用,即改变该表的自增列当前值;否则,将不影响该自增列当前值;
- 当设置一个表的 IDENTITY_INSERT 属性为 OFF 时,新插入行中自增列的当前值由系统自动生成,用户将无法指定;
- 自增列一经插入,无法修改;
- 手动插入自增列,除了将 IDENTITY_INSERT 设置为 ON,还要求在插入列表中明确指定待插入的自增列列名。插入方式与非 IDENTITY 表是完全一样的。如果插入时,既不指定自增列名也不给自增列赋值,则新插入行中自增列的当前值由系统自动生成。
举例说明
例 SET IDENTITY_INSERT 的使用
- PERSON_TYPE表中的PERSON_TYPEID列是自增列,目前拥有的数据如下所示。
PERSON_TYPEID | NAME |
---|---|
1 | 采购经理 |
2 | 采购代表 |
3 | 销售经理 |
4 | 销售代表 |
- 在该表中插入数据,自增列的值由系统自动生成。
INSERT INTO PERSON.PERSON_TYPE(NAME) VALUES('销售总监');
INSERT INTO PERSON.PERSON_TYPE(NAME) VALUES('人力资源部经理');
插入结果如下所示:
PERSON_TYPEID | NAME |
---|---|
1 | 采购经理 |
2 | 采购代表 |
3 | 销售经理 |
4 | 销售代表 |
5 | 销售总监 |
6 | 人力资源部经理 |
- 当插入数据并且要指定自增列的值时,必须要通过语句将 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 | 财务部经理 |
- 不允许用户修改自增列的值。
UPDATE PERSON.PERSON_TYPE SET PERSON_TYPEID = 9 WHERE NAME = '广告部经理';
修改失败。对于自增列,不允许 UPDATE 操作。
- 还原 IDENTITY_INSERT 属性。
SET IDENTITY_INSERT PERSON.PERSON_TYPE OFF;
- 插入后再次查询。注意观察自增列当前值的变化。
INSERT INTO PERSON.PERSON_TYPE(NAME) VALUES('市场总监');
PERSON_TYPEID | NAME |
---|---|
1 | 采购经理 |
2 | 采购代表 |
3 | 销售经理 |
4 | 销售代表 |
5 | 销售总监 |
6 | 人力资源部经理 |
8 | 广告部经理 |
9 | 财务部经理 |
10 | 市场总监 |
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgebijg
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01