我希望把数据库设计成可以通过外部程序动态的为某个表添加或者删除字段!请问这个具体应该怎么设计?

解决方案 »

  1.   

    不是跟添加数据和删除数据类似的嘛
    一个是dml语句 一个是ddl语句
    添加列 
    alter table tablename add (col1 type1,...);
    删除列
    alter table drop column columnname;
      

  2.   

    写个存储过程,使用动态SQL的形式执行DDL语句就行了。。然后外部程序调用下。。
      

  3.   

    例如:有一个表table1共有10个字段,A用户需要使用其中的前3个字段,B用户使用后面2个字段.剩下5个字段是共享的。
    我看网上说再建一个表来存储那些独享的字段,对这块不是很了解所有来咨询下各位大虾!
      

  4.   

    阿门,建三个试图不能实现你的需求吗?一个A用户的试图(3个字段),一个B用户的试图(2个字段),再一个共享的试图(5个字段),然和再针对每个用户grant,这样你每个用户不就能操作相应的字段了吗?
      

  5.   

    你自己建立一张表,用来存储你的用户可以查询到的字段的名字,然后你使用动态SQl的形式生成你的查询语句。
    比如tablea
    username,cols
    A        a,b,c
    B        a,b
    c        *
    你就可以拼接成的sql
    对于用户A
    select a,b,c from tablename
      

  6.   

    楼上的答案也可以解决。我这里有一个类似的方式。
    建一个关联表:比你要查询的表多一个字段就是用户,然后将关联表所有的列设置为char(1)类型,里面只存0或者1,0表示不可见,1表示可见。
    然后你的sql可以这么写  select  decode(b.name,'0',null,a.name) name  from A a,B b where...