2017-09-18 2 views
0

J'ai deux tables direcomment générer un paramètre en utilisant une procédure stockée dans mysql?

table1:

create table Person(
    Id int primary key auto_increment, 
    name varchar(20), 
    Gender char(1) 
); 

table2:

create table Details(
    Age int, 
    Phone int(10) primary key, 
    Address varchar(100) 
    Id foreign key(Id) references Person(Id), 
    Name foreign key(Name) references Person(Name) 
); 

je vais devoir créer une procédure stockée pour insérer des données dans la table: 'Détails'

create procedure usp_insert(
    IN Name varchar(100), 
    IN Age int, 
    IN Phone int(10), 
    IN Address varchar(100), 
    OUT Id int 
) 
begin 

//want to output the Id as QW001 on inserting the data into the Details table. 

insert into Details(Name,Age,Phone,Address) values(name,age,phone,address) 
end 

Comment puis-je obtenir l'ID au format suivant «QW001»? paramètre de sortie. Quelqu'un peut-il m'aider à corriger la procédure stockée ci-dessus, puisque je suis nouveau à cela. Toute aide est appréciée. TYIA!

+0

MySQL colonnes auto-incrément sont des nombres entiers. Voir https://stackoverflow.com/questions/23331194/concatenating-a-string-and-primary-key-id-while-inserting/23331246#23331246 –

Répondre

0

vous devez utiliser LAST_INSERT_ID() comme ceci:

create procedure usp_insert(
    IN Name varchar(100), 
    IN Age int, 
    IN Phone int(10), 
    IN Address varchar(100), 
    OUT Id int 
) 
begin 

insert into Details(Name,Age,Phone,Address) values(name,age,phone,address); 
set Id =CONCAT("QW00", LAST_INSERT_ID()) AS ConcatenatedString; 
end 
+0

Mais je voulais que l'ID soit au format suivant 'QW001' – Kenz

+0

Y a-t-il un autre moyen de concaténer ou quelque chose? – Kenz

+0

vous pouvez utiliser la fonction CONCAT() de mysql – colapiombo