FAQ |
Kalender |
![]() |
#7 | |||
|
||||
Medlem
|
Tycker inte om när tabeller och fält har samma namn. Det blir förvillande (det är väl åldern), men jag gör ett försök ändå.
Skapa tabellerna: Kod:
create table Person ( Id int unsigned not null auto_increment primary key, Name int unsigned not null, Age tinyint unsigned default null ) engine=innodb; Kod:
create table Name ( Id int unsigned not null auto_increment primary key, Name varchar(255) not null , unique key Name_unique (Name) ) engine = innodb default charset=latin1; Kod:
delimiter // create procedure insertName(Namn tinytext) begin declare chk int default 0; select count(*) from Name where Name = Namn into chk; if chk = 0 then insert into Name (Name) values (Namn); insert into Person (Name) values (last_insert_id()); end if; end // delimiter ; Lite kommentarer till proceduren. Kollar om Namn finns i tabell Name, dvs räknar hur många Namn det finns i tabellen. Kan ge resultat 0 eller 1. Kod:
select count(*) from Name where Name = Namn into chk; Ta Id:et på posten stoppa in i tabellen Person Kod:
if chk = 0 then insert into Name (Name) values (Namn); insert into Person (Name) values (last_insert_id()); end if; Kod:
CALL insertName('Nisse Hult'); CALL insertName('Anders Borg'); CALL insertName('Barak Obama'); Kod:
CALL insertName('Nisse Hult'); Var det så du villa ha det? · Senast redigerad av aelander den 2010-12-18 klockan 03:55 |
|||
![]() |
![]() |
Ämnesverktyg | |
Visningsalternativ | |
|
|