Guia de Bases de Dades: INSERT amb claus foranes (Knights & Dragons)
Com abordar aquest problema
Practiques INSERT en dues taules relacionades. La taula Dragons té una clau forana: la columna KilledBy ha de contenir el sobrenom (Nickname) d'un cavaller que ja existeixi a Knights. Cada pregunta és una sola sentència INSERT.
La sintaxi que necessites
INSERT INTO taula (col1, col2, col_clau_forana)
VALUES ('text', 123, 'valor_que_ja_existeix_a_l_altra_taula')
- La llista de columnes diu quina columna rep cada valor; els
VALUESvan en el mateix ordre. - Els textos i les dates, entre cometes simples; els números, sense.
- Si un text conté un apòstrof, s'escriu doblat:
'L''Hospitalet'. - Una clau forana ha de coincidir exactament (majúscules, espais...) amb la clau primària de l'altra taula.
Pregunta per pregunta
Pregunta 1. Un cavaller nou. Consulta l'esquema: totes les columnes de Knights són NOT NULL, així que les has d'omplir totes. Copia els valors amb cura, respectant majúscules i espais: el sobrenom serà la clau primària.
Pregunta 2. Un drac nou, mort per un cavaller que ja existeix. El valor de KilledBy ha de ser exactament el Nickname d'aquell cavaller. Les víctimes conegudes són un número. No depenguis del cavaller de la pregunta 1: cada pregunta es corregeix sobre la base de dades original.
Un exemple semblant
Una dama inventada:
INSERT INTO Knights (Nickname, Gender, Firstname, Lastname, Title, BirthDate, DeathDate)
VALUES ('Joana the Brave', 'F', 'Joana', 'Serra', 'Lady', '1180-03-03', '1241-09-09')
Un drac inventat, mort a mans d'un cavaller existent:
INSERT INTO Dragons (Name, Description, Color, KnownVictims, KilledBy, DeathDate, BattleOutcome)
VALUES ('Fumarola', 'A grumpy old dragon.', 'Grey', 12, 'Aelizia the Noble', '1210-07-21', 'Wounded')
Paranys habituals:
- Escriure
KilledByamb una petita diferència respecte alNicknamereal (una majúscula, un espai): ja no és el mateix cavaller. - Deixar sense valor una columna
NOT NULL: la sentència falla. - Posar
KnownVictimsentre cometes: seria un text, no un número. - Repetir una clau primària que ja existeix.