Oracle 复制表结构及数据 竟然丢失了默认值?

hellobbboy 2014-01-10 04:42:08
今天复制一个表,sql如下:
create table t_bak as select * from t;

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

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

...全文
417 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellobbboy 2014-01-14
  • 打赏
  • 举报
回复
引用 4 楼 forgetsam 的回复:
所谓的默认值就是约束的一种,复制表不会复制约束信息,原因非常简单,它可能牵涉到其它表,所以不管是牵涉到还是牵涉不到,一律不复制。
看来我是小白了。。。 那敢问有木有比较全的复制表的方法啊?就是约束主键什么的,所有表定义全都复制过去?谢谢。
forgetsam 2014-01-11
  • 打赏
  • 举报
回复
所谓的默认值就是约束的一种,复制表不会复制约束信息,原因非常简单,它可能牵涉到其它表,所以不管是牵涉到还是牵涉不到,一律不复制。
惜分飞 2014-01-10
  • 打赏
  • 举报
回复
主键,约束也会丢失
hellobbboy 2014-01-10
  • 打赏
  • 举报
回复
引用 1 楼 zlloct 的回复:
[quote=引用 楼主 helloworldhellobbboy 的回复:] 今天复制一个表,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; [/quote] 谢谢。敢问大家都是这么复制表的么?在Oracle?感觉略麻烦啊
CT_LXL 2014-01-10
  • 打赏
  • 举报
回复
引用 楼主 helloworldhellobbboy 的回复:
今天复制一个表,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;

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧