| 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 04:55 |
|||
|
|
Svara med citat
|
|
|