Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
ALTER TABLE
ALTER TABLEmengubah definisi tabel.
Sintaksis yang didukung
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] action [, ... ] ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME [ COLUMN ] column_name TO new_column_name ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME CONSTRAINT constraint_name TO new_constraint_name ALTER TABLE [ IF EXISTS ] name RENAME TO new_name ALTER TABLE [ IF EXISTS ] name SET SCHEMA new_schema ALTER TABLE ASYNC [ IF EXISTS ] [ ONLY ] name [ * ] VALIDATE CONSTRAINT constraint_name where action is one of: ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] ALTER [ COLUMN ] column_name SET DEFAULT expression ALTER [ COLUMN ] column_name DROP DEFAULT ALTER [ COLUMN ] column_name DROP NOT NULL ALTER [ COLUMN ] column_name DROP EXPRESSION [ IF EXISTS ] ALTER [ COLUMN ] column_name ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...] ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ] ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ADD table_constraint NOT VALID ADD table_constraint_using_index DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } and table_constraint is: [ CONSTRAINT constraint_name ] CHECK ( expression ) and table_constraint_using_index is: [ CONSTRAINT constraint_name ] UNIQUE USING INDEX index_name
Deskripsi
ADD [ COLUMN ] [ IF NOT EXISTS ]-
Formulir ini menambahkan kolom baru ke tabel, menggunakan sintaks yang sama sepertiCREATE TABLE. Jika
IF NOT EXISTSditentukan dan kolom sudah ada dengan nama ini, tidak ada kesalahan yang dilemparkan. DROP [ COLUMN ] [ IF EXISTS ]-
Formulir ini menjatuhkan kolom dari tabel. Indeks dan batasan tabel yang melibatkan kolom akan dihapus secara otomatis kecuali untuk batasan kunci utama. Menjatuhkan kolom kunci utama tidak didukung. Statistik multivariat yang merujuk kolom yang dijatuhkan juga akan dihapus jika penghapusan kolom akan menyebabkan statistik berisi data hanya untuk satu kolom. Anda perlu mengatakan
CASCADEapakah ada sesuatu di luar tabel tergantung pada kolom, misalnya, referensi kunci asing atau tampilan. JikaIF EXISTSditentukan dan kolom tidak ada, tidak ada kesalahan yang dilemparkan. Dalam hal ini pemberitahuan dikeluarkan sebagai gantinya. SET/DROP DEFAULT-
Formulir ini menetapkan atau menghapus nilai default untuk kolom (di mana penghapusan setara dengan menyetel nilai default ke NULL). Nilai default baru hanya akan berlaku di
UPDATEperintahINSERTatau berikutnya; itu tidak menyebabkan baris yang sudah ada di tabel berubah. DROP NOT NULL-
Formulir ini mengubah kolom untuk mengizinkan nilai null.
DROP EXPRESSION [ IF EXISTS ]-
Formulir ini mengubah kolom yang dihasilkan disimpan menjadi kolom dasar normal. Data yang ada di kolom dipertahankan, tetapi perubahan di masa mendatang tidak akan lagi menerapkan ekspresi pembuatan. Jika
DROP EXPRESSION IF EXISTSditentukan dan kolom bukan kolom yang dihasilkan, tidak ada kesalahan yang dilemparkan. Dalam hal ini pemberitahuan dikeluarkan sebagai gantinya. ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITYSET GENERATED { ALWAYS | BY DEFAULT }DROP IDENTITY [ IF EXISTS ]-
Formulir ini mengubah apakah kolom adalah kolom identitas atau mengubah atribut generasi dari kolom identitas yang ada. Lihat CREATE TABLE untuk detail. Seperti
SET DEFAULT, formulir ini hanya memengaruhi perilakuUPDATEperintahINSERTdan berikutnya; mereka tidak menyebabkan baris yang sudah ada di tabel berubah.Ini
sequence_optionadalah opsi yang didukung oleh ALTER SEQUENCE sepertiINCREMENT BY. Bentuk-bentuk ini mengubah urutan yang mendasari kolom identitas yang ada.catatan
Amazon Aurora DSQL memerlukan
CACHEnilai eksplisit saat menggunakanADD GENERATED AS IDENTITY. Selain itu, kolom identitas hanya didukung padabigintkolom.Saat menggunakan kolom identitas, nilai cache harus dipertimbangkan dengan cermat. Untuk informasi selengkapnya, lihat penjelasan penting di CREATE SEQUENCE halaman.
Untuk panduan tentang cara terbaik menggunakan kolom identitas berdasarkan pola beban kerja, lihatBekerja dengan urutan dan kolom identitas.
SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }-
Formulir ini mengatur mode penyimpanan untuk kolom. Untuk detail tentang mode penyimpanan yang tersedia, lihat Mode penyimpanan di CREATE TABLE halaman.
ADDtable_constraintNOT VALID-
Formulir ini menambahkan
CHECKbatasan baru ke tabel. Di Aurora DSQL,CHECKbatasan yang ditambahkan melaluiALTER TABLE ADD CONSTRAINTharus menggunakanNOT VALIDopsi. Aurora DSQL membuat batasan tetapi tidak segera memvalidasinya terhadap data yang ada. Hal ini memungkinkan batasan ditambahkan tanpa memindai seluruh tabel. Batasan berlaku segera untuk semua baris dan pembaruan baru.Setelah menambahkan batasan dengan
NOT VALID, gunakanALTER TABLE ASYNC ... VALIDATE CONSTRAINTuntuk memvalidasi bahwa data yang ada juga memenuhi batasan. Validasi berjalan sebagai pekerjaan DDL asinkron. Anda dapat memantau kemajuannya menggunakansys.jobs. ADDtable_constraint_using_index-
Formulir ini menambahkan
UNIQUEbatasan baru ke tabel berdasarkan indeks unik yang ada. Semua kolom indeks akan dimasukkan dalam batasan.Indeks harus dalam
VALIDkeadaan; menambahkan batasan unik menggunakan indeks saat indeks sedang dibangun tidak didukung.Jika nama kendala disediakan maka indeks akan diganti namanya agar sesuai dengan nama kendala. Jika tidak, batasan akan diberi nama sama dengan indeks.
Setelah perintah ini dijalankan, indeks “dimiliki” oleh batasan, dengan cara yang sama seolah-olah indeks telah dibangun oleh
CREATE UNIQUE INDEX ASYNCperintah biasa. Secara khusus, menjatuhkan batasan akan membuat indeks menghilang juga. VALIDATE CONSTRAINT-
Formulir ini memvalidasi batasan yang sebelumnya dibuat dengan opsi.
NOT VALIDPerintah ini adalah operasi DDL asinkron yang tidak memblokir transaksi lain. Saat Anda menjalankanALTER TABLE ASYNC ... VALIDATE CONSTRAINT, Aurora DSQL segera mengembalikan ajob_id.Anda dapat memantau status pekerjaan asinkron ini menggunakan tampilan
sys.jobssistem. Anda juga dapat menggunakansys.wait_for_job(untuk memblokir sesi saat ini sampai validasi selesai atau gagal.'job_id')Pekerjaan validasi memindai seluruh tabel untuk memverifikasi bahwa semua baris yang ada memenuhi batasan. Setelah validasi selesai dengan sukses, Aurora DSQL menandai batasan sebagai valid dan perencana kueri memberlakukannya untuk semua kueri. Jika validasi gagal karena baris yang ada melanggar batasan, pekerjaan gagal dan batasan tetap dalam status.
NOT VALIDPerintah ini hanya memvalidasi batasan yang Anda buat dengan
NOT VALIDopsi. Mencoba memvalidasi batasan yang sudah valid menghasilkan kesalahan. DROP CONSTRAINT [ IF EXISTS ]-
Formulir ini menjatuhkan batasan yang ditentukan pada tabel, bersama dengan indeks apa pun yang mendasari kendala. Jika
IF EXISTSditentukan dan batasan tidak ada, tidak ada kesalahan yang dilemparkan. Dalam hal ini pemberitahuan dikeluarkan sebagai gantinya. OWNER TO-
Formulir ini mengubah pemilik tabel ke pengguna yang ditentukan.
RENAME-
RENAMEFormulir mengubah nama tabel, nama kolom individu dalam tabel, atau nama kendala tabel. Saat mengganti nama kendala yang memiliki indeks yang mendasarinya, indeks juga diganti namanya. Tidak ada efek pada data yang disimpan. SET SCHEMA-
Formulir ini memindahkan tabel ke skema lain. Indeks terkait, batasan, dan urutan yang dimiliki oleh kolom tabel dipindahkan juga.
Parameter
IF EXISTS-
Jangan membuang kesalahan jika tabel tidak ada. Pemberitahuan dikeluarkan dalam kasus ini.
name-
Nama (opsional memenuhi syarat skema) dari tabel yang ada untuk diubah. Jika
ONLYditentukan sebelum nama tabel, hanya tabel yang diubah. Jika tidakONLYditentukan, tabel dan semua tabel turunannya (jika ada) diubah. Secara opsional,*dapat ditentukan setelah nama tabel untuk secara eksplisit menunjukkan bahwa tabel keturunan disertakan. column_name-
Nama kolom baru atau yang sudah ada.
new_column_name-
Nama baru untuk kolom yang ada.
new_name-
Nama baru untuk tabel.
data_type-
Jenis data kolom baru.
table_constraint-
Definisi
CHECKkendala. Di Aurora DSQL,CHECKbatasan harus ditambahkan denganNOT VALIDopsi menggunakanALTER TABLE ADD CONSTRAINT. Lihat CREATE TABLE untuk sintaksCHECKkendala lengkap. constraint_name-
Nama kendala baru atau yang sudah ada.
CASCADE-
Secara otomatis menjatuhkan objek yang bergantung pada kolom atau batasan yang dijatuhkan (misalnya, tampilan yang merujuk kolom), dan pada gilirannya semua objek yang bergantung pada objek tersebut.
RESTRICT-
Menolak untuk melepaskan kolom atau batasan jika ada objek dependen. Ini adalah perilaku default.
new_owner-
Nama pengguna pemilik baru tabel.
new_schema-
Nama skema tempat tabel akan dipindahkan.
Catatan
For DROP COLUMN mulir tidak secara fisik menghapus kolom, tetapi hanya membuatnya tidak terlihat oleh operasi SQL. Operasi menyisipkan dan memperbarui berikutnya dalam tabel akan menyimpan nilai nol untuk kolom. Dengan demikian, menjatuhkan kolom itu cepat tetapi tidak akan segera mengurangi ukuran pada disk tabel Anda, karena ruang yang ditempati oleh kolom yang dijatuhkan tidak direklamasi. Ruang akan direklamasi dari waktu ke waktu karena baris yang ada diperbarui.
Jika kolom yang dijatuhkan direferensikan sebagai INCLUDE kolom dalam kunci utama, definisi kunci utama akan diperbarui untuk menghapus kolom yang dijatuhkan.
Tabel di Aurora DSQL dapat memiliki paling banyak 255 kolom aktif pada satu waktu dan maksimum 1600 kolom selama masa pakai tabel. Menjatuhkan kolom tidak merebut kembali nomor atributnya. Ini menghapusnya dari kumpulan kolom aktif tetapi kolom yang dijatuhkan terus dihitung terhadap batas seumur hidup 1600 kolom. Lihat informasi yang lebih lengkap di Batas database di Aurora DSQL.