解决方案 »
- 如何在Java程序里解决“ORA-01089: 正在执行立即关闭 - 不允许进行任何操作”?
- 一个棘手的Oracle Hint相关的问题。
- dataload中Shift+Page Down即\+{PGDN}無法使用
- C++中 有 SQL语句 能否有游标?
- 位图索引与 B-tree 索引:选择与时间 进来解释一下
- 变量绑定执行动态语句错误 ORA-01001
- 基础的问题?
- 先进先去的处理
- pb 与oracle的连接
- win7 64位 用php 连接本地数据库 报错oci_connect()ora-12154 tns 无法解析指定的连接标识符
- 数据迁移请大家帮忙看看,我想找出每个表的最后修改时间,这样我就可以把不经常用的表先导入过去
- 请问我这句有错误吗
如果要把VARCHAR(14)类型改为number类型呢?又如何操作?SQL>alter table tab modify(col newtype);如何把AAC001的字段原为空修改为非空呢????
可以增加约束SQL>alter table tab add constraint c_chech check(AAC001 not null);
可以更改 但是会有一些限制条件
SQL> select * from t1;P C TYPE
---------- ---------- ----------
p1 c1 n
p1 c2 s
c2 s1 n
s1 n1 n
c2 s2 s
s2 d1 n
s2 d2 s
d2 e1 n
d2 e2 s9 rows selected.SQL> desc t1;
Name Null? Type
----------------------------------------- -------- ---------------------------- P VARCHAR2(10)
C VARCHAR2(10)
TYPE VARCHAR2(10)
SQL> alter table t1 modify(p varchar2(20));Table altered.SQL> desc t1;
Name Null? Type
----------------------------------------- -------- ---------------------------- P VARCHAR2(20)
C VARCHAR2(10)
TYPE VARCHAR2(10)
--因为表中已经存在占有两个字符的数据 所以当你想更改为varchar2(1)的时候会报错
SQL> alter table t1 modify(p varchar2(1));
alter table t1 modify(p varchar2(1))
*
ERROR at line 1:
ORA-01441: cannot decrease column length because some value is too big2
字符型改数字型 那得看你原来字符型的那一列中是不是已经有数据了
SQL> create table t2(name varchar2(10));Table created.SQL> insert into t2 values('1');1 row created.SQL> commit;Commit complete.SQL> select * from t2;NAME
----------
1SQL> alter table t2 modify(name number);
alter table t2 modify(name number)
*
ERROR at line 1:
ORA-01439: column to be modified must be empty to change datatype3
通过加约束来实现吧
ALTER TABLE table_name ADD new_column_name TYPE(length);
然后把原旧列内容复制到新列:
SELECT old_column_name INTO new_column_name FROM table_name;
再删除旧列:
ALTER TABLE table_name DROP COLUMN old_column_name ;不知道这样的办法行否????还有个疑问就是针对“主键”字段又如何修改?把“短”字段修改为“长”字段,估计还好操作; 对于把“长”字段修改为“短”字段,估计很麻烦?