Bonjour à tous,
Je suis à la recherche d'une méthodologie pour faire des enregistrements dans la base de donnée (Mysql) qui donne le code le plus clair.
J'ai mis un exemple ci-dessous lié à la création d'un utilisateur, générant des enregistrements dans 3 tables.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 CREATE TABLE `user` ( `id` int NOT NULL, `login` varchar(20) NOT NULL, `password` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `user` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `user` (`login`); CREATE TABLE `address` ( `id` int NOT NULL, `route` varchar(20) NOT NULL, `postal_code` varchar(20) NOT NULL, `country` varchar(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `address` ADD PRIMARY KEY (`id`) CREATE TABLE `cat` ( `id` int NOT NULL, `idUser` int NOT NULL, `idAddress` int NOT NULL, `name` varchar(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `cat` ADD PRIMARY KEY (`id`)
Jusqu'à présent j'imbriquais mes requêtes les une dans les autres (voir ci-dessous). Mais ça devient trés vite lourd, puisqu'il faut vérifier si insert ou update ..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 var dataNew = {id: null, cat: 'christian', user: {login: 'loginTest', password: 'passTest'}, address: {route: '123 rue de la lune', postal_code: 59000, country: 'lille'}} // Nouvel enregistrement var dataUpdate = {id: 1, cat: 'christian', user: {login: 'loginTest', password: 'ModifduPass'}, address: {route: '69 rue de la lune', postal_code: 59000, country: 'lille'}} // Enregistrement à modifier
C'est pour cela que je suis à la recherche de conseil pour une organisation/méthode pour enregistrer des données dans plusieurs tables au cours d'un même process.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 connection.query(mysql.format(req_user_sel1,[_this._login!=''?_this._login:new Date().getTime(), req.session.user.idCat, req.session.user.idCat]), function(err, rows) { if (err) { ..... } else if (rows.length==0) { connection.query(mysql.format(req_client_sel6,[_this._code, req.session.user.idCat]), function(err, rows) { if (err) { .... } else { if (rows.length > 0) { _this.message.error.push("Le code '" + _this._code + "' est déjà utilisé."); return _this.stop(); } connection.query(mysql.format(req_client_ins2,[req.session.user.idCat, _this._code, _this._comment, "{}", _this._activated]), function(err, rows) { if (err||rows.affectedRows==0) { .... } else { _this._id = rows.insertId; connection.query(mysql.format(req_user_ins2,[_this._id, _this._login, _this._password, _this._activated]), function(err, rows) { if (err||rows.affectedRows==0) { ....
Merci par avance à celui qui pourra m'aiguiller
Partager