17,088
社区成员
发帖
与我相关
我的任务
分享
可以尝试这样设计:
create table 用户字段表
(
用户ID int, -- 用于关联对应的用户
自定义字段所在的表名 varchar2(50), -- 用于关联被定义的表
定义字段name varchar2(50),
定义字段value varchar2(100)
)
--提供个思路:(假如此表的名称为:user_define_table)
Create or replace trigger biu_user_define
Before update or insert On user_define_table
for each row
begin
--使用循环进行判断:
if updating then
if ... then ... --使用:new.col=:old.col对每列进行判断,看用户修改了有没有?
--如果已修改,则记录表名为user_table_i,col名为v_col_i,修改值为u_col_i:
select 'alter table user_table_i rename column ' || v_col_i || ' to ' || u_col_i from user_define_table;
end if;
if inserting then
--如果是新增表,则用insert into来做。
end if;
end biu_user_define;
create or replace procedure xx( v_1 varchar2,v_2 varchar2)
is
sqlstr varchar2(200);
begin
sqlstr:='alter table tablename rename column '||v_1||' to '||v_2||';';
execute immediate sqlstr;
end;
当用户要修改那个列的时候只要调用这个存储过程就可以。