10. februar 2003 - 16:02Der er
20 kommentarer og 1 løsning
Constraints eller hvad ??
Jeg har 2 tabeller: Main og ForSale.
I Main har jeg en feltværdi der kan være enten 1 eller 0. Den hedder SetForSale. I tabellen ForSale oprettes poster på samme tid som feltet SetForSale bliver sat til 1.
Mit problem er, at det er muligt f.eks. at gå direkte på DB og sætte SetForSale til 1 uden at oprette noget i ForSale.
Kan man ikke lave en constraint eller lignende der forhindrer at det overhovedet er muligt? Eller er det en Trigger ???
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
jo sføli... Var bare lkige kommet helt væk fra spørgsmålet hehe...
Åben din SQL EnterpriseManager, vælg tabellen ForSale, højreklik vælg Design, højreklik på et feltnavn, vælg properties, vælg fanebladet Relationships, tryk New, sæt primary key table til ForSale og Foreign key til Main, sæt flueben i Cehck existing data on creation!
Jeg skal jo også vælge et feltnavn under key tables, og det jeg egentlig gerne vil, er jo at altid have et 1-tal i SetForSale FELTET i Main, hvis emnet eksisterer i ForSale tabellen.
Det er jo ikke det jeg gør med et alm. relationship,.eller ???
hmmm, næh det kan man åbenbart ikke på tværs af tabeller :O(
Du må lave en relation imellem de 2 tabeller evt. vha. et id og på den måde sikre at der ikke kan oprettes et produkt i SetForSale uden selve produktet eksisterer i ForSale.
Jeg vil gerne hjælpe mere, men jeg mangler noget info. Hvad er det med de 2 tabeller, hvad skal den ene og den anden bruges til ?
Men er det nemmeste ikke bare at selecte direkte i tabellen og se om produktet er til salg eller ej?? - Istedet for at have en anden tabel til styring... Det er lidt svært for mig lige at ha det store overblik :O)
Det er muligt du har ret, men nu har jeg sat mig for at finde ud af hvordan man styrer det,.kan være man får brug for det senere ;o)
Jeg kan godt få en trigger til at slette alt i min tabel, men når jeg forsøger at bruge Where klausuler med en anden tabel går det galt.. Kan man ikke joine flere tabeller i en trigger ?
CREATE TRIGGER trig_name ON TABLE table_name FOR UPDATE AS IF UPDATE(field1) UPDATE table_name FROM table_name INNER JOIN deleted d ON table_name.key1 = d.key1 --AND table_name.key2 = d.key2 ... WHERE table_name.field1 = 'Y' AND d.field1 <> 'Y'
jo, deleted er den record som bliver slettet, i ovenstående får den tablealias d, denne deleted må nødvendigvis også ha en relation til en anden tabel når der skal joines. Det kan jo enten være i form af en primary key (hvilket er at foretrække), eller bare join på et andet ikke indexeret column. (derfor key1 og key2... det skal bare forståes som join nøgler) Mht. update, så ville du jo gerne have at Main.dbo.SetForSale blev sat til 0 når produktet blev slettet i ForSale!!
nej ikke helt sådan,..jeg vil gerne have at når ForSale i main bliver sat til 0, slettes emnet automatisk i ItemsForSale.
Når jeg normalt joiner ser det da sådan her ud:
dbo.Main INNER JOIN dbo.Models ON dbo.Main.ModelID = dbo.Models.ID
Der bruger jeg da ikke dine Key ???
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.