2009-02-12 6 views
3

Est-il possible de configurer un déclencheur mysql qui renvoie le numéro d'id de cet enregistrement quand il y a un insert dans la base de données ET comment puis-je capturer cela en utilisant php?Mes déclencheurs SQL

Répondre

3

À moins que je ne comprenne pas complètement votre question, vous n'avez pas besoin d'un déclencheur pour cela - utilisez simplement la fonctionnalité «dernier inséré» de votre pilote de base de données.

Voici un exemple utilisant le pilote mysql de base en PHP.

<?php 

$db = mysql_connect('localhost', 'user', 'pass'); 

$result = mysql_query("insert into table (col1, col2) values ('foo', 'bar')", $db); 

$lastId = mysql_insert_id(); 

Il s'agit d'une méthode de connexion sécurisée pour obtenir l'ID.

1

Je ne suis pas vraiment sûr de ce que vous demandez. Voulez-vous insérer une ligne dans la base de données et obtenir l'identifiant qui lui a été attribué aussi? Si oui, faites cela

printf ("Dernier enregistrement inséré a id% d \ n", mysql_insert_id());

2

Comme expliqué dans les réponses précédentes, vous ne devriez pas besoin d'utiliser un déclencheur pour retourner l'identité. Vous pouvez utiliser la commande mysql_insert_id() comme décrit dans [documentation] [1].

Toutefois, si vous devez utiliser le nouvel identifiant d'insertion dans un déclencheur, utilisez NEW [identity_column_name] comme suit:.

CREATE TABLE temp (
    temp_id int auto_increment, 
    value varchar(10), 
    PRIMARY_KEY(temp_id) 
); 

CREATE TRIGGER after_insert_temp AFTER INSERT ON temp 
FOR EACH ROW 
BEGIN 
    DECLARE @identity; 
    SET @identity = NEW.temp_id; 
    -- do something with @identity 
END 
Questions connexes