2011-11-03 4 views
0

J'ai essayé d'envelopper ma tête autour de celui-ci, mais je n'ai pas réussi.mises à jour en cascade dans les tables mysql

Fondamentalement, j'essaye de créer une base de données contenant seulement deux tables. La première table est la table logins et contient des colonnes:

User ID 
Username 
Password 
First Name 
Last Name 

La deuxième table est la table de vote, et contient des colonnes:

User ID 
Vote 1 
Vote 2 
Vote 3 

etc., etc.

est là de toute façon que je peux relier ces tables avec l'ID utilisateur en tant que clé primaire, qui peut mettre à jour/supprimer en cascade, de sorte que lorsque j'ajoute une entrée dans la table de connexion, il crée automatiquement une entrée dans la table des votes avec le même ID utilisateur; valeur par défaut pour toutes les colonnes de vote?

Je pourrais ajouter les votes à la table principale, mais je voulais les séparer autant que possible, car tout le monde ne créera pas de votes.

Un grand merci Eds

Répondre

0

vous pouvez spécifier un insert trigger sur la table logins.

Ceci s'exécutera chaque fois qu'une ligne est insérée dans la table logins. Vous pouvez spécifier ce que vous voulez que le déclencheur fasse. Dans ce cas, vous pouvez créer le déclencheur pour insérer une seule ligne dans votre table vote à l'aide de l'ID simplement créé dans le tableau login avec vos valeurs par défaut.

donc quelque chose comme:

CREATE TRIGGER logins_default_vote AFTER INSERT ON logins 
FOR EACH ROW 
INSERT INTO vote (UserID,Vote1,Vote2,Vote3) 
VALUES (NEW.UserId,'vote1 default','vote2 default','vote3 default'); 
+0

Merci, je vais essayer ça! – Eds

0

Si vous souhaitez des mises à jour en cascade, vous aurez besoin d'utiliser une transaction:

START TRANSACTION; 

INSERT INTO logins (username, passhash, salt, `first name`, `last name`) 
    VALUES ('$username', SHA2(CONCAT('$salt','$password'),512), '$salt', 
      '$firstname', '$lastname'); 
SELECT @userid:= LAST_INSERT_ID(); 
INSERT INTO votes (userid) VALUES (@userid); 

COMMIT; 

Assurez-vous que vous avez des valeurs par défaut définies dans la définition de table la table des votes.

Notez l'utilisation de mots de passe hachés salés.

+0

Merci, je vais essayer ça! – Eds

Questions connexes