ToB企服应用市场:ToB评测及商务社交产业平台

标题: 达梦数据库如何设置自增主键 [打印本页]

作者: 铁佛    时间: 2024-8-26 14:49
标题: 达梦数据库如何设置自增主键
达梦数据库自增通常是利用序列和触发器

1.创建序列

  1. CREATE SEQUENCE your_sequence_name  
  2. START WITH 1  
  3. INCREMENT BY 1  
  4. NOCACHE;
复制代码
2.创建触发器

在插入新记录时,利用触发器自动从序列中获取下一个值,并设置到自增字段上。
  1. CREATE OR REPLACE TRIGGER your_trigger_name  
  2. BEFORE INSERT ON your_table_name  
  3. FOR EACH ROW  
  4. BEGIN  
  5.     IF :NEW.id IS NULL THEN -- 假设id是自增字段  
  6.         SELECT your_sequence_name.NEXTVAL INTO :NEW.id FROM DUAL;  
  7.     END IF;  
  8. END;
复制代码
完备例子如:
  1. CREATE SEQUENCE seq_u_operation_log_id  
  2. START WITH 1  
  3. INCREMENT BY 1  
  4. NOCACHE;
  5. CREATE TABLE HSZ_PRODUCT_UCENTER.U_OPERATION_LOG (
  6.         ID BIGINT NOT NULL,
  7.         OPERATION VARCHAR(50),
  8.         REQUEST_URI VARCHAR(255),
  9.         REQUEST_METHOD VARCHAR(20),
  10.         REQUEST_PARAMS CLOB,
  11.         USER_AGENT VARCHAR(500),
  12.         CREATOR_NAME VARCHAR(50),
  13.         OPERATION_TIME TIMESTAMP,
  14.         REQUEST_IP VARCHAR(100),
  15.         REQUEST_TIME BIGINT,
  16.         REQUEST_STATUS TINYINT,
  17.         REQUEST_RESULT CLOB,
  18.         PRIMARY KEY (ID)
  19. );
  20. CREATE OR REPLACE TRIGGER trg_u_operation_log_before_insert  
  21. BEFORE INSERT ON U_OPERATION_LOG  
  22. FOR EACH ROW  
  23. BEGIN  
  24.     IF NEW.id IS NULL OR NEW.id = 0 THEN   
  25.         SELECT seq_u_operation_log_id.NEXTVAL INTO :NEW.id FROM DUAL;  
  26.     END IF;  
  27. END;  
复制代码
留意:DMDB中的触发器语法可能与上面的示例不完全类似,详细取决于你的DMDB版本和配置。上面的示例是基于Oracle风格的语法,由于达梦数据库在某些方面与Oracle相似。你可能需要查阅你的DMDB版本的官方文档来获取准确的触发器语法。
留意事项
在利用IDENTITY列时,请确保你的应用步伐在插入记录时不要为IDENTITY列指定值,除非你有特殊的需求。
如果利用序列和触发器,请确保序列和触发器的名称、表名、字段名等与你的实际环境相匹配。
在利用序列时,思量是否需要缓存(NOCACHE或CACHE)来提高性能。不外,利用缓存可能会带来序列值回滚的风险,这取决于你的详细应用场景。
总是查阅最新的达梦数据库文档,由于差别版本的数据库在功能和语法上可能有所差别。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4