Bonjour,
Voila je rencontre un petit problème avec mon code.
salut, j'ai une table onlines(id,client,poste,created,profile_id) et une table aides(id,montant,dateinit,created,caisse_id). j'aimerai qe à chaque insertion dans la table onlines, qu'une insertion soit aussi faite dans la table aide. Pour cela j'ai créer un trigger en mysql pour effectuer l'action.
Voici mon action dans mon controlleur
public function Online($id = null)
{
$listusers = TableRegistry::get("Onlines");
$users = $listusers->query();
$users->insert(['client','poste','created','profile_id'])
->values(['client'=>$this->request->header('User-Agent'),
'poste'=>$this->request->clientIp(),
'created' => new Time(),
'profile_id' => $id])
->execute();
}
mon trigger :
CREATE DEFINER = CURRENT_USER TRIGGER `mybd`.`onlines_AFTER_INSERT` AFTER INSERT ON `onlines` FOR EACH ROW
BEGIN
insert into aides(id,montant,delaiinit,created,caisse_id) value('','20000',SYSDATE(),SYSDATE(),'12');
END
l'appel de ma fonction
public function myfonction()
{
$this->onlines(10);
}
mettre à jour automatique la table aide lorsque la table onlines est aussi mise à jour
Error: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'id' at row 1
par contre si je supprime le trigger et recrèe sans le trigger j'arrive à bien enregistrer dans la table online seulement. Je sais je peux le faire côté code (php), mais j'aimerai bien le faire côté BD car je veux minimiser l'execution des tâches par le serveur web.
quelqu'un a déjà eu ce problème?
non mais dans le debug, j'ai bien la requete qui s'execute avec les valeurs bien formatées
insert into onlines(id,client,poste,created,profile_id) values(,'valeur client','ip','date bien formaté','10') sauf que je ne vois pas ou il montre la valeur de l'id
la remarque que j'ai faite est la suivante:
lorsque je retire le trigger tous ce passe bien mais lorsque je l'ajoute hop c'est la catastrophe