Avatar billede larsen45 Juniormester
20. marts 2014 - 10:10 Der er 6 kommentarer og
1 løsning

Microsoft SQL Server 2012

Vi har på skolen fået en opgave hvor vi skulle oprette disse 5 tabeller, som ses herunder i Microsoft SQL Server 2012 Express.

-- ***TABEL postnr***
create table postnr (
postnr int Not NULL,
BYER varchar (40) Not NULL
constraint postnr_postnr_pk primary key (postnr)
)

-- ***TABEL kunder***
create table kunder (
kundenr int Not NULL,
firmanavn varchar (40) Not NULL,
gade varchar (40) Not NULL,
postnr int Not NULL,
telefon varchar (40) Not NULL,
typer varchar (40) Not NULL
constraint kunder_kundenr_pk primary key (kundenr),
constraint kunder_postnr_fk FOREIGN KEY (postnr) REFERENCES postnr(postnr)
)


-- ***TABEL medarbejdere***
create table medarbejdere (
medarbnr int Not NULL,
fornavn varchar (40) Not NULL,
efternavn varchar (40) Not NULL,
gade varchar (40) Not NULL,
postnr int Not NULL,
telefon varchar (40) Not NULL,
ansat_dag varchar (40) Not NULL,
stilling varchar (50) Not NULL,
afdeling varchar (40) Not NULL,
fyringsdato varchar (40) Not NULL
constraint medarbejdere_medarbnr_pk primary key (medarbnr),
constraint medarbejdere_postnr_fk FOREIGN KEY (postnr) REFERENCES postnr(postnr)
)




-- ***TABEL lager***
create table lager (
varernr int Not NULL,
varenavn varchar (40) Not NULL,
antal int Not NULL,
pris int Not NULL,
minantal int Not NULL,
constraint lager_varernr_pk primary key (varernr),

)
-- ***TABEL ordre***
create table ordre (
ordrenr int Not NULL,
kundenr int Not NULL,
varernr int Not NULL,
medarbnr int Not NULL,
indgået int Not NULL,
afsluttet varchar (40) Not NULL,
antal int Not NULL
constraint ordre_ordrenr_pk primary key (ordrenr),
constraint ordre_kunder_fk FOREIGN KEY (kundenr) REFERENCES kunder(kundenr),
constraint ordre_medarbnr_fk FOREIGN KEY (medarbnr) REFERENCES medarbejdere(medarbnr),
constraint ordre_varenr_fk FOREIGN KEY (varernr) REFERENCES lager(varernr)


Så skal der indsættes manuelt data i hver tabel.
Den første hedder tabel: kunde som ses herunder.

-- ***INSERT command TABEL kunder***
INSERT INTO dbo.kunder VALUES
(1000, 'Ci Danmark', 'Langstedvej 3', '5620', '70 89 84 15', 'A/S'),
(1001, 'Nicolaisen & Larsen', 'Holmegade 58', '6990', '70 10 12 14', 'A/S'),
(1002, 'CNC Netservice', 'Doktorparken 36 D', '9230', '21 74 40 36', 'APS'),
(1003, 'Bøg Mortensen', 'Dalumvej 55', '5250', '66 11 79 00', 'I/S'),
(1004, 'Pedersen Værktøjsmaskiner', 'Industrivej 16', '4200', '58 50 49 20', 'APS'),
(1005, 'Hans Jørn Hvid Sjellerupskov', 'Holmvej 32', '6430', '74 45 96 89', 'APS'),
(1006, 'Maskinpartner', 'Julius Thomsensvej 2 - 4', '7100', '75 82 72 00', 'A/S'),
(1007, 'A. P. Maskinteknik', 'Ulvemosevej 6', '6800', '75 26 73 00', 'A/S'),
(1008, 'Køge Container Service', 'Grønlandsvej 7', '4681', '56 27 50 95', 'APS'),
(1009, 'Dansk Industri Service', 'Generatorvej 17', '2730', '70 20 70 15', 'A/S')

Insert kommandoen fejler ved tast F5 med følgende se herunder:

Msg 547, Level 16, State 0, Line 1
The INSERT statement conflicted with the FOREIGN KEY constraint "kunder_postnr_fk". The conflict occurred in database "firma", table "dbo.postnr", column 'postnr'.
The statement has been terminated.


Hvad er det præcist som går galt, hvad skal der tastes for at rette fejlen, så jeg kan få lov til at indsætte data i tabellerne når de har constraint relation imellem hinanden.

Ingen i klassen ved hvordan man løser dette problem.
Avatar billede Slettet bruger
20. marts 2014 - 10:20 #1
Der skal data i tabellen postnr først.
Avatar billede Syska Mester
20. marts 2014 - 10:25 #2
Din kunde table har en ref til postnr.

Dvs du prøver at peje på noget som ikke findes. Det kan ikke lade sig gøre.

Indssæt de postnumre i den table, så vil det virker.
Avatar billede larsen45 Juniormester
20. marts 2014 - 11:30 #3
Hvordan klarer man så det problem, når tabellen postnr, har påsat en primær nøgle til selve postnr kolonnen? Hvor jeg kan forstår den er låst fast med auto nummering hvor den automatisk stiger med 1 hver gang.

Jeg ved ikke lige hvordan man gør.
hvordan ville i klarer det problem, nu hvor jeg heller ikke kan få lov at lave en insert sql og indsætte data i postnr når den er låst fast.
Avatar billede Syska Mester
20. marts 2014 - 11:53 #4
Nej, siden postnr i DK er unik er selve det nummer din nøgle og dermed har du ingen "auto incremental id" aka "IDENTITY column"

Så det er bare at indsætte med postnr og by.

Har i selv lavet de tables eller er det jeres lære der har gjort det?

-- ***TABEL postnr***
create table postnr (
postnr int Not NULL,
BYER varchar (40) Not NULL
constraint postnr_postnr_pk primary key (postnr)
)

"BYER" for ental ... :-)
Avatar billede larsen45 Juniormester
20. marts 2014 - 14:06 #5
Vi har fået udlevet et stykke a4 papir hvor der var en tegning af de forskellige tabeller af læren.

Så har vi så selv lavet tabellerne efter de angivne felter som stod på tegning som skulle med i hver tabel og tastet ind.


Meningen er så at vi skal lave relationer imellem dem som er angivet korrekt med constraint.

Så først skal vi oprette en tabel 1, så constraint 2, og så insert into, hvor vi skal smide data ind i hver tabel af tal og tekst som vi har fået oplyst af læren hvad der skal stå.

Mit store problem i den sammenhæng er at jeg ikke kan få lov at indsætte nået data overhovedet, når der er lavet relationer, og det påstår læren at vi skal kunne det vil sige indsætte tekst og tal i  hver tabel.

Jeg fatter bare ikke hvad jeg skal gøre for det kan lade sig gøre når der først er lavet relationer imellem tabellerne.
Avatar billede Syska Mester
22. marts 2014 - 21:34 #6
Du skal i hvert fald have en række i PostNr ...

Indsæt alle de postnr fra dine kunder data du allerede har lavet.

For at man kan referere noget i en anden tabel skal de data jo være tilgengælige ... :-)

Hvis i lige har oprettet alle tables, så er der jo ikke noget data deri og dermed fejler jeres constraint som den skal.
Avatar billede larsen45 Juniormester
17. august 2014 - 10:59 #7
Jeg glemte at sige tak for jeres hjælp.

Er der nogen som vil have point siger i bare til.
Eller bliver denne tråd lukket ned lidt senere idag.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester