日期:2014-05-17  浏览次数:21282 次

Oracle 复制表结构及数据 竟然丢失了默认值?
今天复制一个表,sql如下:
create table t_bak as select * from t;

发现t表定义的字段默认值竟然没有复制到t_bak!!!

感觉很坑啊,oracle不熟,请指教。


------解决方案--------------------

引用:
今天复制一个表,sql如下:
create table t_bak as select * from t;

发现t表定义的字段默认值竟然没有复制到t_bak!!!

感觉很坑啊,oracle不熟,请指教。
 
这种情况你就自己复制默认值过去嘛,比如:如果COLUMN1 为空就等于默认值
create table t_bak as select DECODE(T.COLUMN1,NULL,'默认值',T.COLUMN1),T.COLUMN2,... from t;


------解决方案--------------------
主键,约束也会丢失
------解决方案--------------------
所谓的默认值就是约束的一种,复制表不会复制约束信息,原因非常简单,它可能牵涉到其它表,所以不管是牵涉到还是牵涉不到,一律不复制。