You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建数据表并编写触发器实现ID自动录入

实现ID自动录入的数据表创建及PL/SQL代码示例

以下是完整的PL/SQL实现方案,涵盖数据表创建、ID字段自动赋值触发器,以及批量插入数据的存储过程和调用示例:

1. 创建数据表

创建用于存储人员信息的数据表,包含姓氏、名字和自增ID字段:

CREATE TABLE table8_prc (
    Family VARCHAR2(200),
    Name VARCHAR2(200),
    ID INTEGER
);

2. 创建序列生成自增ID

创建序列来生成ID字段的连续自增值:

CREATE SEQUENCE ID_seq1
    MINVALUE 1
    START WITH 1
    INCREMENT BY 1
    CACHE 20;

3. 创建触发器实现ID自动赋值

通过BEFORE INSERT触发器,在每次插入新记录前自动从序列获取下一个值,赋值给ID字段:

CREATE OR REPLACE TRIGGER trg1
    BEFORE INSERT ON table8_prc
    FOR EACH ROW
BEGIN
    SELECT ID_seq1.nextval INTO :new.ID FROM dual;
END;

4. 创建批量插入数据的存储过程

该存储过程接收格式为名字;姓氏,名字;姓氏的字符串,通过正则拆分后批量插入数据(注:原代码中SELECT语句错误包含ID字段,已修正,因ID由触发器自动赋值,插入无需指定):

CREATE OR REPLACE PROCEDURE addnewmem1 (str IN VARCHAR2)
AS
BEGIN
    INSERT INTO table8_prc (Name, Family)
        WITH temp AS
            (SELECT REGEXP_SUBSTR(str, '[^,]+', 1, LEVEL) val
             FROM DUAL
             CONNECT BY LEVEL <= REGEXP_COUNT(str, ',') + 1)
        SELECT SUBSTR(val, 1, INSTR(val, ';') - 1),
               SUBSTR(val, INSTR(val, ';') + 1)
        FROM temp;
    COMMIT;
END;

5. 调用存储过程示例

两次调用存储过程,批量插入两组人员信息:

BEGIN
    addnewmem1 ('faezeh;Ghanbarian,pari;izadi');
END;

BEGIN
    addnewmem1 ('Saeed;Izadi,Saman; Rostami');
END;

内容的提问来源于stack exchange,提问作者Its_faezeh0308

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:15:36