该存储过程存在几个小问题,比如序列的命名方式使用的是seq_tablename_id,包括触发器使用的命名则是以tablename_trirger,可能引发的问题是:
1.表明过长超过oracle限定最长对象的30个字符。
2.表名可能含有无意义的前缀或者后缀,占用字符。
由于这两个问题因人而异只能根据具体问题具体修改了,如有需要,可以下载附件,下面附上代码仅供参考:
declare --获取当前用户所拥有的全部表的数量 tables_names_length varchar2(200); --游标获取到的表名 table_name varchar2(200); --主键名称 primary_key varchar2(200); --主键数量(为了衡量当前表是否存在主键) primary_key_nums varchar2(200); --序列数量(为了衡量穿件的序列是否存在) sequences_numbers varchar2(200); --序列名称 sequences_name varchar2(200); --是否需要全盘创建触发器 is_create_trigger varchar2(200) := true; sql_select_tables_names_length varchar2(2000); sql_select_tables_primary_key varchar2(2000); sql_select_tables_key_nums varchar2(2000); sql_insert_sequences varchar2(2000); sql_select_sequences_numbers varchar2(2000); sql_create_sequences varchar2(2000); sql_create_trigger varchar2(2000); CURSOR CURSOR_TABLE_NAME IS select TABLE_NAME from USER_TABLES; begin --获取当前用户拥有的表数量 sql_select_tables_names_length := 'select count(*) from USER_TABLES'; EXECUTE IMMEDIATE sql_select_tables_names_length INTO tables_names_length; OPEN CURSOR_TABLE_NAME; for i in 1 .. tables_names_length LOOP FETCH CURSOR_TABLE_NAME INTO table_name; --根据游标获取的表名获取当前表的主键数量 sql_select_tables_key_nums:= 'select COUNT(*) from user_cons_columns where constraint_name = (select constraint_name from user_constraints where table_name = '''||table_name||''' and constraint_type =''P'')'; execute immediate sql_select_tables_key_nums INTO primary_key_nums; --判断主键是否存在 if (primary_key_nums<>0) then sql_select_tables_primary_key := 'select COLUMN_NAME from user_cons_columns where constraint_name = (select constraint_name from user_constraints where table_name = '''||table_name||''' and constraint_type =''P'')'; execute immediate sql_select_tables_primary_key INTO primary_key; --判断主键名称是否为ID if (primary_key='ID') then --根据命名规则创建符合规则的序列名称 sequences_name:='SEQ_'||table_name||'_'||primary_key; sql_select_sequences_numbers := 'SELECT count(*) FROM All_Sequences where SEQUENCE_NAME='''||sequences_name||''''; execute immediate sql_select_sequences_numbers INTO sequences_numbers; --判断待创建序列是否存在 if (sequences_numbers=0) then sql_create_sequences:='create sequence '||sequences_name||' increment by 1 start with 1 minvalue 1 nomaxvalue nocycle'; execute immediate sql_create_sequences; if (is_create_trigger) then sql_create_trigger:='create or replace trigger '||table_name||'_trigger before insert on '||table_name||' for each row begin '||sequences_name||'.NEXTVAL into:new.id from sys.dual; end;' execute immediate sql_create_trigger; end if; end if; end if; end if; END LOOP; end;
相关推荐
Oracle数据库中的序列(Sequence)是一种特殊的数据类型,用于生成唯一的整数序列,通常用作主键的值。在Oracle中,创建序列可以帮助我们自动化生成唯一标识符,避免手动管理这些值,尤其在需要大量插入新记录时,...
在创建数据表时,如果需要自动化DML进程,那么使用数据库触发器和序列来填充主键列可以提高效率和可靠性。 其次,关于提高开发效率,使用HTML DB的UI缺省值可以预先为表、列或视图设置默认的用户界面属性,如字段...
70 <br>0096 如何将数字转换为字符串 70 <br>0097 如何将字符串转换为数字 70 <br>0098 如何将数字转换为日期格式 71 <br>0099 如何将数字转换为货币格式 71 <br>0100 将字母全部转换大写 ...
- 约束用于确保表中的数据完整性,包括主键、外键、唯一性等。 **4. 树状结构存储** - 在数据库中存储树状结构可以通过多种方法实现,比如路径法、嵌套集法或闭包表法。 **5. 存储过程、触发器** - 存储过程是一...
少儿编程scratch项目源代码文件案例素材-纸人伙计.zip
scratch少儿编程逻辑思维游戏源码-忍者罗伊 V5.zip
scratch少儿编程逻辑思维游戏源码-跑和枪.zip
前端开发_基于jQuery和EasyUI框架_企业级Web应用UI组件库与后台管理系统模板_提供GPL开源版本和商业授权版本的双重授权模式_适用于快速构建响应式管理后台和复杂数据可
少儿编程scratch项目源代码文件案例素材-纸格通关 云变量.zip
微信机器人开发_Wechaty框架_百度云主机部署_自然语言处理_消息自动化处理_多媒体文件管理_聊天记录持久化_表情包导出_语音视频自动保存_文件管理系统集成_跨平台数据同步_个
少儿编程scratch项目源代码文件案例素材-钻机机器人.zip
少儿编程scratch项目源代码文件案例素材-作战基地.zip
云计算_微服务分布式架构SpringCloudSpringBootDubboVuejs_互联网云快速开发框架敏捷开发系统代码生成工作流CMS图表统计地图统计_免费开源JAVA企业
scratch少儿编程逻辑思维游戏源码-日落塔.zip
Tobapuww_GPT-Recovery-Files_12888_1745866661386
少儿编程scratch项目源代码文件案例素材-战斗竞技场.zip
scratch少儿编程逻辑思维游戏源码-球球大作战.zip
聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程 系统采用FastAdmin框架独立全新开发,安全稳定,系统支持代理、商户、码商等业务逻辑。 针对最近一些JD,TB等业务定制,子账号业务逻辑API 非常详细,方便内置对接! IP白名单 业务逻辑 支持IP白名单,黑名单,全局白名单,全局黑名单,保障系统的安全。 接口验签名 采用支付宝RSA加密接口方式,防止篡改数据,导致对账困难,资金大量损失,无故少钱 对接灵活 全部对接参数灵活操作 风控完善 轮询、交易金额、随机金额、最大金额、最小金额等 测试环境: Nginx+PHP7.0+MySQL5.6 网站运行目录:/public 伪静态设置为:thinkphp规则 数据库信息修改路径:/application/database.php
校园社交服务_微信小程序云开发_公告资讯失物招领二手交易兼职招聘表白墙_为高校师生提供一站式校园生活服务平台包含校园动态通知课程表查询失物发布与认领二手物品交易平台兼职信息发布与求
yinghuayu2377_myFTPDemo_32152_1745866651913