View a markdown version of this page

ALTER TABLE - Amazon Aurora DSQL

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 EXISTS ditentukan 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 CASCADE apakah ada sesuatu di luar tabel tergantung pada kolom, misalnya, referensi kunci asing atau tampilan. Jika IF EXISTS ditentukan 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 UPDATE perintah INSERT atau 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 EXISTS ditentukan dan kolom bukan kolom yang dihasilkan, tidak ada kesalahan yang dilemparkan. Dalam hal ini pemberitahuan dikeluarkan sebagai gantinya.

ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY
SET 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. SepertiSET DEFAULT, formulir ini hanya memengaruhi perilaku UPDATE perintah INSERT dan berikutnya; mereka tidak menyebabkan baris yang sudah ada di tabel berubah.

Ini sequence_option adalah opsi yang didukung oleh ALTER SEQUENCE sepertiINCREMENT BY. Bentuk-bentuk ini mengubah urutan yang mendasari kolom identitas yang ada.

catatan

Amazon Aurora DSQL memerlukan CACHE nilai eksplisit saat menggunakanADD GENERATED AS IDENTITY. Selain itu, kolom identitas hanya didukung pada bigint kolom.

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.

ADD table_constraint NOT VALID

Formulir ini menambahkan CHECK batasan baru ke tabel. Di Aurora DSQL, CHECK batasan yang ditambahkan melalui ALTER TABLE ADD CONSTRAINT harus menggunakan NOT VALID opsi. 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 denganNOT VALID, gunakan ALTER TABLE ASYNC ... VALIDATE CONSTRAINT untuk memvalidasi bahwa data yang ada juga memenuhi batasan. Validasi berjalan sebagai pekerjaan DDL asinkron. Anda dapat memantau kemajuannya menggunakansys.jobs.

ADD table_constraint_using_index

Formulir ini menambahkan UNIQUE batasan baru ke tabel berdasarkan indeks unik yang ada. Semua kolom indeks akan dimasukkan dalam batasan.

Indeks harus dalam VALID keadaan; 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 ASYNC perintah biasa. Secara khusus, menjatuhkan batasan akan membuat indeks menghilang juga.

VALIDATE CONSTRAINT

Formulir ini memvalidasi batasan yang sebelumnya dibuat dengan opsi. NOT VALID Perintah 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.jobs sistem. Anda juga dapat menggunakan sys.wait_for_job('job_id') untuk memblokir sesi saat ini sampai validasi selesai atau gagal.

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 VALID

Perintah ini hanya memvalidasi batasan yang Anda buat dengan NOT VALID opsi. 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 EXISTS ditentukan 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 ONLY ditentukan sebelum nama tabel, hanya tabel yang diubah. Jika tidak ONLY ditentukan, 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 CHECK kendala. Di Aurora DSQL, CHECK batasan harus ditambahkan dengan NOT VALID opsi menggunakanALTER TABLE ADD CONSTRAINT. Lihat CREATE TABLE untuk sintaks CHECK kendala 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.