不知道您用的是什么数据库了。
不过做法肯定是一样,用两个游标,第一个游标从数据字典中检索出所有的表,第二个游标从每个表中检索所有的字段,然后遇到有要和你删除名称相同的字段的时候,执行alter table tablename drop column columnname的操作。
不过这个执行不能直接这么执行,而是设置一个字符串的变量,例如SQLSERVER,需要@delsql = 'alter table ' + @tablename + ' drop column ' + @columnname
exec(@delsql)
而oracle也一样delsql = 'alter table ' + tablename + ' drop column ' + columnname;
execute immediate delsql;
要使用这样的写法。
不可能使用一个SQL直接删除所有的。
这个批量删除写个存储过程就行了
给你个思路
删除表中一个字段
删除列语句-alter table 表名
drop column 列名;
写个存储过程把要删除的表都写进去,执行就OK 了。
这本身就是不安全的,数据库不会给你提供这样的功能,你还是通过程序脚本来实现吧!
select name from SysObject
alter table tablename drop yourfield
你说不删除数据那不就是修改主键的字段名么