`
mr_lonely_hp
  • 浏览: 91339 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

如何对系统默认的约束名和索引名重命名

阅读更多

as
--查找用户所有表的游标
cursor cur_table is select table_name from user_tables;

--查找某张表所有约束的游标
cursor cur_cons (c_table varchar2) is select c.constraint_name,c.constraint_type,
c.search_condition from user_constraints c where c.table_name=c_table
and substr(c.constraint_name,2,2) <> 'K_';

--查找某个约束所有字段的游标
cursor cur_columns(c_cons varchar2) is select column_name from user_cons_columns
where constraint_name=c_cons;

--存储修改后的约束名
v_new_cons_name varchar2(100);

--存储修改约束名的SQL语句
v_sql varchar2(150);

--存储重名的个数
cnt number :=1;

--存储新索引名的个数
n_idx number;

--存储新约束名的个数
n_con number;

begin
--循环取表名
for cur_ltable in cur_table loop

--循环取约束名
for cur_lcons in cur_cons(cur_ltable.table_name) loop

v_new_cons_name :=null;

--循环取字段名
for cur_lcolumns in cur_columns(cur_lcons.constraint_name) loop
v_new_cons_name := v_new_cons_name || cur_lcolumns.column_name;
end loop;
v_new_cons_name := replace(v_new_cons_name,'_','');
v_new_cons_name := cur_ltable.table_name ||'_' || v_new_cons_name;

if cur_lcons.constraint_type='P' then
v_new_cons_name := 'PK_' || v_new_cons_name;
elsif cur_lcons.constraint_type='R' then
v_new_cons_name := 'FK_' || v_new_cons_name;
elsif cur_lcons.constraint_type='U' then
v_new_cons_name := 'UK_' || v_new_cons_name;
elsif cur_lcons.constraint_type='C'
and instr(cur_lcons.search_condition,'IS NOT NULL') > 0 then
v_new_cons_name := 'CK_' || v_new_cons_name || 'NOTNULL' ;
elsif cur_lcons.constraint_type='C'
and instr(cur_lcons.search_condition,'IS NOT NULL') = 0
and cur_lcons.search_condition is not null then
v_new_cons_name := 'CK_' || v_new_cons_name;
end if;

--约束名如果超过30个字符的处理
if length(v_new_cons_name) > 29 then
v_new_cons_name := substr(v_new_cons_name,1,15) || substr(v_new_cons_name,-14);
end if;

--查找系统里是否有新的约束名
select count(*) into n_con from user_constraints where constraint_name=v_new_cons_name;
select count(*) into n_idx from user_indexes where index_name=v_new_cons_name;
if n_con > 0 or n_idx > 0 then
v_new_cons_name := v_new_cons_name || to_char(cnt);
cnt := cnt +1;
end if;


--对由主键和唯一键创建的索引进行改名,改后的名

分享到:
评论

相关推荐

    MySQL常见问题总结

    比如,可以使用ALTER TABLE table_name MODIFY field_name data_type来修改字段数据类型,使用ALTER TABLE table_name CHANGE old_field_name new_field_name data_type来修改字段名和数据类型。 10. 数据库优化和...

    Oracle数据库对象管理及备份与恢复.pdf

    B树索引是默认和最常用的类型,适用于大多数场景;位图索引适合基数较低的列;反向键索引适用于特定的使用情况。此外,还有基于函数的索引和分区索引。管理索引时,要考虑索引的建立位置、数量限制、空间使用参数和...

    在SQL中约束的课件,很有用的

    需要注意的是,更改对象名可能会影响依赖于该对象的其他脚本和存储过程。 8. **删除表(DROP TABLE)**: 使用`DROP TABLE`语句可以彻底删除一个表及其所有数据和相关约束。执行此操作前需谨慎,因为它不会提示...

    MySQL Alter Table 修改表信息.docx

    ALTER TABLE 语句也可以修改索引名和索引属性,语法如下: ALTER TABLE tb_name DROP INDEX_TYPE index_name, ADD INDEX_TYPE new_index_name (column) 例如,要将 user 表的 status 字段上的索引名从 index_...

    第2章SQL-Server-2014系统简单应用.pptx

    在系统中可以定义多个实例,通常系统提供默认实例和命名实例两种类型。命名实例的名称是计算机网络名称加上具体实例名称,但命名实例名称总长度不能超过 16 个字符。 SQL Server 2014 环境使用说明部分主要介绍了 ...

    oracle数据库基本操作讲义.pptx

    1. 使用CREATE TABLE语句创建表,指定字段名、数据类型和约束条件。 2. 使用DROP TABLE语句删除表,注意这将永久性地删除表及其数据。 3. 使用ALTER TABLE语句修改表,可以添加、删除或修改字段,更改约束,重命名表...

    mysql常见查询语句和学习笔记解析.docx

    ` 用于同时修改字段名和类型。 5. **删除字段**: - `ALTER TABLE 表名 DROP 字段名;` 用于删除字段。 6. **清空表数据但保留表结构**: - `TRUNCATE TABLE 表名;` 用于清空表中的所有数据,但保留表结构不变。 ...

    ORACLE数据库教程.pptx

    创建索引可以提高查询性能,CREATE INDEX语句用于创建普通索引或唯一索引,指定索引名和对应的表及列。 修改表结构,如重命名表,使用ALTER TABLE RENAME TO;增加新列,使用ALTER TABLE ADD;修改已有列的属性,如...

    SQL Server 2008管理员必备指南(超高清PDF)Part1

    William R.Stanek微软MVP(最有价值专家),拥有20多年系统管理和高级编程的经验。他是屡获嘉奖的作家,著作多达70部,其中包括Microsoft Windows Server 2008 InsideOut。他也是“管理员必备指南”系列丛书的编辑。...

    SQL Server 2008管理员必备指南(超高清PDF)Part3

    William R.Stanek微软MVP(最有价值专家),拥有20多年系统管理和高级编程的经验。他是屡获嘉奖的作家,著作多达70部,其中包括Microsoft Windows Server 2008 InsideOut。他也是“管理员必备指南”系列丛书的编辑。...

    SQL Server 2008管理员必备指南(超高清PDF)Part2

    William R.Stanek微软MVP(最有价值专家),拥有20多年系统管理和高级编程的经验。他是屡获嘉奖的作家,著作多达70部,其中包括Microsoft Windows Server 2008 InsideOut。他也是“管理员必备指南”系列丛书的编辑。...

    数据库代码总结.docx

    索引重命名** - 通过`sp_rename`存储过程可以实现索引的重命名。 ```sql EXEC sp_rename '表名.索引名', '表名.新索引名'; ``` **5. 视图重命名** - 视图的重命名也通过`sp_rename`来完成。 ```sql EXEC sp...

    数据库原理与技术读书笔记.docx

    索引类型包括聚簇索引(主键默认创建)和非聚簇索引,根据具体需求选择合适的索引类型和策略。 最后,SQL Server提供了丰富的内置存储过程,如`sp_rename`用于重命名表或列,`sp_help`用于显示对象信息,`sp_...

    第6章Oracle数据库基本操作之二.pptx

    Oracle数据库是企业级广泛使用的数据库管理系统,尤其在大型企业及组织中,它的强大功能和稳定性使其成为数据存储和管理的首选。本章主要关注Oracle数据库的基本操作,特别是与数据类型、SQL/Plus环境以及表、索引和...

    mysql全能资料.doc

    - 添加默认约束: `ALTER TABLE 表名 ALTER COLUMN 列名 SET DEFAULT 默认值` - 添加检查约束: `ALTER TABLE 表名 ADD CONSTRAINT CHECK (列名 &gt; 10)`,请注意MySQL标准SQL不直接支持CHECK约束。 - 添加外键约束: ...

    SQL.Server.2008管理员必备指南.part2.rar(2/4)

     William R.Stanek微软MVP(最有价值专家),拥有20多年系统管理和高级编程的经验。他是屡获嘉奖的作家,著作多达70部,其中包括Microsoft Windows Server 2008 InsideOut。他也是“管理员必备指南”系列丛书的编辑...

    SQL.Server.2008管理员必备指南.part1.rar(1/4)

     William R.Stanek微软MVP(最有价值专家),拥有20多年系统管理和高级编程的经验。他是屡获嘉奖的作家,著作多达70部,其中包括Microsoft Windows Server 2008 InsideOut。他也是“管理员必备指南”系列丛书的编辑...

    SQL.Server.2008管理员必备指南.part3.rar(3/4)

     William R.Stanek微软MVP(最有价值专家),拥有20多年系统管理和高级编程的经验。他是屡获嘉奖的作家,著作多达70部,其中包括Microsoft Windows Server 2008 InsideOut。他也是“管理员必备指南”系列丛书的编辑...

    SQL.Server.2008管理员必备指南.part4.rar(4/4)

     William R.Stanek微软MVP(最有价值专家),拥有20多年系统管理和高级编程的经验。他是屡获嘉奖的作家,著作多达70部,其中包括Microsoft Windows Server 2008 InsideOut。他也是“管理员必备指南”系列丛书的编辑...

    Oracle必备学习资料[归类].pdf

    `CREATE USER newer IDENTIFIED BY newer` 创建了一个名为"newer"的用户,并通过`ALTER USER`命令指定了默认表空间和临时表空间。接着,`GRANT`语句赋予了用户一系列权限,包括连接、资源管理、创建会话、DBA权限等...

Global site tag (gtag.js) - Google Analytics