Usa los Highligh "MySQL", por favor.
Bueno, el problema es que el UPDATE se considera de tipo masivo, pero el WHERE no aplica a ninguna clave foránea ni primaria.
Habría que replantearlo mas o menos así:
Código SQL:
Ver originalUPDATE habitacion H
SET estado='libre'
WHERE (H.id_hotel, H.planta, H.nrohabit )
IN (SELECT R.id_hotel, R.planta, R.nrohabit
FROM reserva_particular R
WHERE R.fechadesalida<'2014-03-30')
De todos modos tu modelo adolece de errores conceptuales, como por ejemplo que las tablas
no tengan clave primaria. Eso no sólo es una irregularidad, es un defecto gravísimo. De lapeor de todas las clases de errores posibles en una base de datos.
Y no, esto:
no es declarar una PK.