Nếu bạn trích dẫn cột id
khi tạo OTHERTABLE
sử dụng dấu ngoặc kép ("id"
), thì bạn cũng phải trích dẫn nó khi tạo ràng buộc toàn vẹn tham chiếu và khi truy vấn dữ liệu. Về cơ bản, bạn phải trích dẫn nó mỗi lần. Tôi đề nghị không trích dẫn nó khi tạo bảng, bởi vì theo cách đó bạn không phải trích dẫn nó sau này. Trích dẫn có nghĩa là số nhận dạng có phân biệt chữ hoa chữ thường. Đối với MySQL, nó hoạt động vì bên trong MySQL chuyển đổi các định danh bỏ dấu ngoặc kép thành chữ thường, không giống như các cơ sở dữ liệu khác. Nhưng đối với H2 và các cơ sở dữ liệu khác, nó không hoạt động.
Hai câu lệnh sau hoạt động cho cả MySQL và 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)
);
Vì vậy, nếu bạn có một ngoại lệ trong câu lệnh thứ hai, rất có thể bạn đã sử dụng một cách khác để tạo bảng đầu tiên (OTHERTABLE
). Và đây là vấn đề.
Lần tới, nếu bạn đặt câu hỏi, vui lòng bao gồm create table
tuyên bố của bảng đầu tiên và đăng hoàn thành thông báo lỗi.