Sử dụng nhiều cập nhật bảng

Trong chương trước, chúng ta đã thảo luận về cách sử dụng nhiều bảng. Vì vậy, chúng tôi tiến thêm một bước nữa và tìm hiểumultiple table updates trong chương này.

Sử dụng đối tượng bảng của SQLAlchemy, nhiều hơn một bảng có thể được chỉ định trong mệnh đề WHERE của phương thức update (). PostgreSQL và Microsoft SQL Server hỗ trợ các câu lệnh UPDATE tham chiếu đến nhiều bảng. Điều này thực hiện“UPDATE FROM”cú pháp, cập nhật từng bảng một. Tuy nhiên, các bảng bổ sung có thể được tham chiếu trực tiếp trong mệnh đề “FROM” trong mệnh đề WHERE. Các dòng mã sau giải thích khái niệmmultiple table updates thông suốt.

stmt = students.update().\
values({
   students.c.name:'xyz',
   addresses.c.email_add:'[email protected]'
}).\
where(students.c.id == addresses.c.id)

Đối tượng cập nhật tương đương với truy vấn UPDATE sau:

UPDATE students 
SET email_add = :addresses_email_add, name = :name 
FROM addresses 
WHERE students.id = addresses.id

Theo như phương ngữ MySQL có liên quan, nhiều bảng có thể được nhúng vào một câu lệnh UPDATE duy nhất được phân tách bằng dấu phẩy như được đưa ra bên dưới:

stmt = students.update().\
   values(name = 'xyz').\
   where(students.c.id == addresses.c.id)

Đoạn mã sau mô tả truy vấn UPDATE kết quả:

'UPDATE students SET name = :name 
FROM addresses 
WHERE students.id = addresses.id'

Tuy nhiên, phương ngữ SQLite không hỗ trợ tiêu chí nhiều bảng trong UPDATE và hiển thị lỗi sau:

NotImplementedError: This backend does not support multiple-table criteria within UPDATE