oracle alter语句

create   table  test(a  varchar2 ( 20 ),b  number ( 2 ))
重名命
alter   table  test rename  to  test1
(rename test1 
to  test2)

增删字段


    alter table test2 drop column  f

修改字段类型和大小
alter table test2 modify d varchar(40)
alter table test2 modify f varchar(40)

 

alter   table  test2  add   c  varchar2 ( 30 )
alter   table  test2  add   (d  varchar2 ( 30 ),e  number ( 4 ))
alter   table  test2 rename  column  e   to  f

处理约束

   alter   table   test2     add   constraint   pk_mypri   primary   key   (d ,f )
    利用下面的语句在删除DEPT表中的PRIMARY KEY约束时,同时将删除其它表中引用这个约束的FOREIGN KEY约束: 
    alter table dept drop primary key cascade
     加foreign key约束(多字段/表级)
    alter table employees   add constraint emp_jobs_fk foreign key (job,deptno) references jobs (jobid,deptno) on delete cascade 
ORA-16468错误是由于在Oracle数据保护中使用了“断开式复制”(disconnected replication)导致的。在使用“断开式复制”时,你需要连接到主数据库并暂停复制过程,然后再连接到从数据库执行DDL语句。 以下是一个示例代码,以帮助你执行Oracle ALTER语句并避免ORA-16468错误: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class AlterExample { public static void main(String[] args) { String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String user = "username"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password)) { // 暂停复制 Statement stmt = conn.createStatement(); stmt.executeUpdate("ALTER SESSION DISABLE COMMIT IN PROCEDURE"); // 执行DDL语句 stmt = conn.createStatement(); String sql = "ALTER TABLE mytable ADD column1 VARCHAR2(50)"; stmt.executeUpdate(sql); System.out.println("Table altered successfully."); // 恢复复制 stmt = conn.createStatement(); stmt.executeUpdate("ALTER SESSION ENABLE COMMIT IN PROCEDURE"); } catch (SQLException e) { System.out.println(e.getMessage()); } } } ``` 在上面的代码中,我们使用了JDBC连接到Oracle数据库,并使用`ALTER SESSION DISABLE COMMIT IN PROCEDURE`语句暂停了复制过程,然后执行了ALTER语句来修改表结构,最后使用`ALTER SESSION ENABLE COMMIT IN PROCEDURE`语句恢复了复制过程。 请注意,在执行DDL语句时,你需要确保具有足够的权限来操作数据库。如果你仍然遇到问题,请检查数据库的复制配置以及连接到正确的数据库实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值