Oracle memungkinkan Anda untuk mengganti nama kolom yang ada dalam sebuah tabel. Gunakan klausa RENAME COLUMN dari pernyataan ALTER TABLE untuk mengganti nama kolom yaitu mengubah tabel rename kolom di oracle
Sintaks
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Mari kita lihat contoh ini
SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER UNIQUE, dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date ); Table created. SQL> Desc DEPT_MASTER
Mari kita ganti nama kolom sekarang
SQL> ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NR to DEPT_NR_NEW; Table altered. SQL>Desc DEPT_MASTER
Batasan dan Apa yang Diizinkan
(1) Anda tidak dapat mengganti banyak nama dalam satu pernyataan
Mari kita lihat dengan contoh.
SQL> ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NR_NEW to DEPT_NR, DEPT_NAME to DEPT_N; 2 ALTER TABLE DEPT_MASTER * ERROR at line 1: ORA-23290: This operation may not be combined with any other operation SQL> ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NR_NEW to DEPT_NR,COLUMN DEPT_NAME to DEPT_N; 2 ALTER TABLE DEPT_MASTER * ERROR at line 1: ORA-23290: This operation may not be combined with any other operation
Jadi Anda mendapatkan kesalahan ORA saat mencoba memasukkan dua kolom di dalamnya. Anda harus menjalankan pernyataan terpisah untuk mengubah beberapa kolom.
ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NR_NEW to DEPT_NR; ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NAME to DEPT_N;
(2) Anda dapat mengganti nama kolom meskipun kami memiliki kunci utama, batasan ada padanya.
Ini akan secara otomatis mulai menunjuk ke nama kolom baru
SQL> CREATE TABLE "EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) check(SAL > 1000), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ); Table created. SQL> alter table emp rename column EMPNO to EMP_NO; Table altered. SQL> desc emp Name Null? Type --- ---- --- EMP_NO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) SQL> alter table emp rename column sal to salary; Table altered SQL> desc emp Name Null? Type --- ----- ---- EMP_NO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SALARY NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) SQL> set long 2000 SQL> select dbms_metadata.get_ddl('TABLE','EMP','SCOTT') from dual; CREATE TABLE "SCOTT"."EMP" ( "EMP_NO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SALARY" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CHECK ("SALARY">1000) ENABLE, CONSTRAINT "PK_EMP" PRIMARY KEY ("EMP_NO") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 TABLESPACE "TOOLS" ENABLE ) SEGMENT CREATION DEFERRED PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
Anda dapat melihat dari contoh sebelumnya, centang kendala diubah ke nama kolom baru, dan juga kunci utama juga diubah ke kolom baru
Mari kita ambil contoh lain dengan batasan kunci asing juga
SQL> CREATE TABLE "DEPT" ( "DEPTNO" NUMBER(2,0), "DNAME" VARCHAR2(14), "LOC" VARCHAR2(13), CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO") ) Table created. SQL> CREATE TABLE "EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") REFERENCES "DEPT" ("DEPTNO") ENABLE ); Table created. SQL> insert into DEPT values(10, 'ACCOUNTING', 'NEW YORK'); insert into dept values(20, 'RESEARCH', 'DALLAS'); insert into dept values(30, 'RESEARCH', 'DELHI'); insert into dept values(40, 'RESEARCH', 'MUMBAI'); SQL> insert into emp values( 7698, 'Blake', 'MANAGER', 7839, to_date('1-5-2007','dd-mm-yyyy'), 2850, null, 10 ); SQL> insert into emp values( 7782, 'Clark', 'MANAGER', 7839, to_date('9-6-2008','dd-mm-yyyy'), 2450, null, 10 ); insert into emp values( 7788, 'Scott', 'ANALYST', 7566, to_date('9-6-2012','dd-mm-yyyy'), 3000, null, 20 ); insert into emp values( 7789, 'TPM', 'ANALYST', 7566, to_date('9-6-2017','dd-mm-yyyy'), 3000, null, null ); insert into emp values( 7560, 'T1OM', 'ANALYST', 7567, to_date('9-7-2017','dd-mm-yyyy'), 4000, null, 20 ); insert into emp values( 7790, 'TOM', 'ANALYST', 7567, to_date('9-7-2017','dd-mm-yyyy'), 4000, null, null ); SQL> SQL> commit; Commit complete. SQL> ALTER TABLE DEPT RENAME COLUMN DEPTNO to DEPTNO_NEW; Table altered. SQL> select dbms_metadata.get_ddl('TABLE','EMP','SCOTT') from dual; CREATE TABLE "SCOTT"."EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") REFERENCES "SCOTT"."DEPT" ("DEPTNO_NEW") ENABLE ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "TOOLS"
Kita dapat melihat dari contoh sebelumnya, batasan kunci asing mulai menunjuk ke nama kolom baru secara otomatis.
(3) Anda dapat mengganti nama kolom jika Anda memiliki prosedur, tampilan pada tabel itu, dan kolom.
Tetapi setelah diganti namanya, objek-objek ini akan menjadi tidak valid dan Anda harus memodifikasi tampilan dan paket untuk mengompilasinya. Mari kita lihat ini dengan sebuah contoh
SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER UNIQUE, dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date ); Table created. SQL> create view dept_vw as select dept_nr,dept_name from DEPT_MASTER; View created. SQL> ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NR to DEPT_NR_NEW; Table altered. SQL> select status from user_objects where object_name='DEPT_VW'; STATUS ------ INVALID SQL> alter view DEPT_VW compile; Warning: View altered with compilation errors. SQL> create or replace view dept_vw as select dept_nr_new,dept_name from DEPT_MASTER; View created. SQL> select status from user_objects where object_name='DEPT_VW'; STATUS ------ VALID
Semoga Anda menyukai posting ini di kolom alter table rename di Oracle. Harap berikan umpan balik
Juga Dibaca
ubah tabel di oracle :Ubah tabel di oracle digunakan untuk mengubah kolom, menghapus dan menambahkan batasan, mengubah tipe data kolom tabel, mengubah parameter penyimpanan tabel
mengubah tabel menambah kolom oracle:Berguna wawasan tentang Cara mengubah tabel tambahkan kolom Oracle. Detail tentang fitur penambahan kolom cepat yang diperkenalkan di oracle 11g juga diberikan
oracle create a table:Tabel adalah unit dasar penyimpanan data dalam Oracle Database. kami membahas cara menggunakan perintah buat tabel Oracle untuk membuat tabel dengan kunci asing / kunci utama
mengubah kolom drop tabel di oracle:Lihat cara menjatuhkan kolom menggunakan ubah tabel drop kolom oracle, ubah set tabel oracle kolom yang tidak digunakan dan ubah tabel jatuhkan kolom yang tidak digunakan
cara memeriksa semua batasan pada tabel di Oracle:cara memeriksa semua batasan pada tabel di Oracle menggunakan dba_constraints dan dba_cons_columns tampilan kamus data di database Oracle
modifikasi tipe data kolom di Oracle:Lihat posting ini tentang cara menjatuhkan kolom di Oracle menggunakan tabel ubah oracle, modifikasi kolom. Memodifikasi kolom dapat mengubah nilai default, memungkinkan tidak null
https://docs.Oracle.com/cd/B28359_01/server.111/b28310/tables003.htm