达梦数据库如何设置自增主键

达梦数据库自增通常是使用序列和触发器

1.创建序列

CREATE SEQUENCE your_sequence_name  
START WITH 1  
INCREMENT BY 1  
NOCACHE;

2.创建触发器

在插入新记录时,使用触发器自动从序列中获取下一个值,并设置到自增字段上。

CREATE OR REPLACE TRIGGER your_trigger_name  
BEFORE INSERT ON your_table_name  
FOR EACH ROW  
BEGIN  
    IF :NEW.id IS NULL THEN -- 假设id是自增字段  
        SELECT your_sequence_name.NEXTVAL INTO :NEW.id FROM DUAL;  
    END IF;  
END;

完整例子如:

CREATE SEQUENCE seq_u_operation_log_id  
START WITH 1  
INCREMENT BY 1  
NOCACHE;


CREATE TABLE HSZ_PRODUCT_UCENTER.U_OPERATION_LOG (
	ID BIGINT NOT NULL,
	OPERATION VARCHAR(50),
	REQUEST_URI VARCHAR(255),
	REQUEST_METHOD VARCHAR(20),
	REQUEST_PARAMS CLOB,
	USER_AGENT VARCHAR(500),
	CREATOR_NAME VARCHAR(50),
	OPERATION_TIME TIMESTAMP,
	REQUEST_IP VARCHAR(100),
	REQUEST_TIME BIGINT,
	REQUEST_STATUS TINYINT,
	REQUEST_RESULT CLOB,
	PRIMARY KEY (ID)
);

CREATE OR REPLACE TRIGGER trg_u_operation_log_before_insert  
BEFORE INSERT ON U_OPERATION_LOG  
FOR EACH ROW  
BEGIN  
    IF NEW.id IS NULL OR NEW.id = 0 THEN   
        SELECT seq_u_operation_log_id.NEXTVAL INTO :NEW.id FROM DUAL;  
    END IF;  
END;  

注意:DMDB中的触发器语法可能与上面的示例不完全相同,具体取决于你的DMDB版本和配置。上面的示例是基于Oracle风格的语法,因为达梦数据库在某些方面与Oracle相似。你可能需要查阅你的DMDB版本的官方文档来获取准确的触发器语法。

注意事项
在使用IDENTITY列时,请确保你的应用程序在插入记录时不要为IDENTITY列指定值,除非你有特殊的需求。
如果使用序列和触发器,请确保序列和触发器的名称、表名、字段名等与你的实际情况相匹配。
在使用序列时,考虑是否需要缓存(NOCACHE或CACHE)来提高性能。不过,使用缓存可能会带来序列值回滚的风险,这取决于你的具体应用场景。
总是查阅最新的达梦数据库文档,因为不同版本的数据库在功能和语法上可能有所不同。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值