29. september 2009 - 17:37Der er
16 kommentarer og 1 løsning
Reference til sammensat primærnøgle
Hejsa Hvordan - hvis det kan lade sig gøre - laver jeg en reference til en sammensat primærnøgle?
PARTS ----- PartVendorID(PK,smallint, not null) PartNumber(PK, VARCHAR(50), not null) partname . . .
Jeg har prøve forskelligt, men her er en af de ting jeg har prøvet: CREATE TABLE PartnerDiscount ( PartnerDiscountID SMALLINT IDENTITY NOT NULL PRIMARY KEY
, F_PartnerID SMALLINT NOT NULL REFERENCES Partners(PartnerID) , F_PartVendorID SMALLINT NOT NULL , F_PartNumber VARCHAR(50) NOT NULL
Hej Arne Du har fået dine velfortjente point, men da du er lidt inde i dette problem, vil jeg forsøge med et tillægsspørgsmål (jeg vil selvfølgelig give dig point = 60)
Den sammensatte primærnøgle fra Parts(PartVendorID, PartNumber) [Som ikke står til at ændre, uden at ødelægge resten af db-designet]
Opgaven Så ønsker jeg eksempelvis (Opdigtet) at give 10% rabat til Partner = Brugsen, så partner-brugsen får 10% rabat på reservedele fra partvendorid = 3 = NKT
Derfor virker min oprindelige PartnerDiscount ikke. Jeg ønsker kun adgang til den ENE del af primærnøglen (og det kan man vist ikke), Således: CREATE TABLE PartnerDiscount ( PartnerDiscountID SMALLINT IDENTITY NOT NULL PRIMARY KEY
, F_PartnerID SMALLINT NOT NULL REFERENCES Partners(PartnerID) , F_PartVendorID SMALLINT NOT NULL
, F_PartnerID SMALLINT NOT NULL REFERENCES Partners(PartnerID)
, F_PartVendorID SMALLINT NOT NULL -- Nøgle 1 af sammensat primærnøgle fra Parts , DiscountProcent SMALLINT NOT NULL DEFAULT 0
-- Husk at adde en Constraint. FOREIGN KEY(F_PartVendorID, F_PartNumber)... er ikke nok ,CONSTRAINT foobar FOREIGN KEY(F_PartVendorID) REFERENCES Parts(PartVendorID, PartNumber) )
vil jeg få fejlen: Msg 8139, Level 16, State 0, Line 1 Number of referencing columns in foreign key differs from number of referenced columns, table 'PartnerDiscount'.
, F_PartnerID SMALLINT NOT NULL REFERENCES Partners(PartnerID)
, F_PartVendorID SMALLINT NOT NULL -- Nøgle 1 af sammensat primærnøgle fra Parts , DiscountProcent SMALLINT NOT NULL DEFAULT 0
-- Husk at adde en Constraint. FOREIGN KEY(F_PartVendorID, F_PartNumber)... er ikke nok ,CONSTRAINT testbar FOREIGN KEY(F_PartVendorID) REFERENCES Parts(PartVendorID) )
.. og fejlmeddelelsen: Msg 1776, Level 16, State 0, Line 2 There are no primary or candidate keys in the referenced table 'Parts' that match the referencing column list in the foreign key 'testbar'. Msg 1750, Level 16, State 0, Line 2 Could not create constraint. See previous errors.
Synes godt om
Ny brugerNybegynder
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.