Jika Anda mengutip kolom id
saat membuat OTHERTABLE
menggunakan tanda kutip ganda ("id"
), maka Anda harus mengutipnya juga saat membuat batasan integritas referensial, dan saat meminta data. Pada dasarnya, Anda harus mengutipnya setiap kali. Saya sarankan untuk tidak mengutipnya saat membuat tabel, karena dengan begitu Anda tidak perlu mengutipnya nanti. Mengutip berarti pengidentifikasi peka huruf besar-kecil. Untuk MySQL, ini berfungsi karena secara internal MySQL mengubah pengidentifikasi tanda kutip menjadi huruf kecil, tidak seperti database lainnya. Tetapi untuk H2 dan database lainnya tidak berfungsi.
Dua pernyataan berikut berfungsi untuk MySQL dan H2:
CREATE TABLE IF NOT EXISTS OTHERTABLE (
id BIGINT AUTO_INCREMENT NOT NULL
);
CREATE TABLE IF NOT EXISTS SOMETABLE (
id BIGINT AUTO_INCREMENT NOT NULL,
FOREIGN KEY (id) REFERENCES OTHERTABLE(id)
);
Jadi, jika Anda mendapatkan pengecualian dalam pernyataan kedua, kemungkinan besar Anda telah menggunakan cara berbeda untuk membuat tabel pertama (OTHERTABLE
). Dan di sinilah masalahnya.
Lain kali, jika Anda mengajukan pertanyaan, harap sertakan juga create table
pernyataan tabel pertama, dan posting lengkap pesan kesalahan.