Suite est la requête H2DBINSERT INTO table SELECT ne fonctionne pas avec des valeurs constantes dans H2 DB
INSERT INTO userpermission (userid, permissionid, createddt, createdby, updateddt, updatedby)
SELECT u.userid, p.permissionid, now(), ("1"), now(), ("1") FROM user u, permission p
WHERE u.email = "[email protected]";
Ce que je suis en train de réaliser est d'insérer un enregistrement dans userpermission pour l'utilisateur avec l'adresse e-mail indiquée dans le tableau utilisateur, pour chaque permission dans la table d'autorisation.
Suite est l'erreur
Reason: liquibase.exception.DatabaseException: Column "1" not found; SQL statement:
INSERT INTO userpermission (userid, permissionid, createddt, createdby, updateddt, updatedby)
SELECT u.userid, p.permissionid, now(), ("1"), now(), ("1") FROM user u, permission p
WHERE u.email = "[email protected]" [42122-193] [Failed SQL: INSERT INTO userpermission (userid, permissionid, createddt, createdby, updateddt, updatedby)
SELECT u.userid, p.permissionid, now(), ("1"), now(), ("1") FROM user u, permission p
WHERE u.email = "[email protected]"]
La même requête travaille dans MySQL.
Vous n'êtes pas sûr de H2, mais dans tous les RDMS, les constantes sont déclarées avec des guillemets simples. Les accolades sont également inutiles. Remplacez '(" 1 ")' par ''1''. – Utsav
Oui, j'ai essayé ça avant d'ajouter des accolades. Ne marche pas. – TechCrunch
Remplace également les guillemets doubles par des guillemets simples. Exécutez simplement l'instruction select en premier. Aussi, vous faites une jointure croisée en ne donnant pas de condition de jointure. Est-ce intentionnel? – Utsav