Toon posts:

[SQL] Primary key voor view?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben met een webapplicatie bezig om toeganag te krijgen tot de Microsoft SQL database. Ik ben eigenlijk helemaal klaar daarmee. Nu wil men eigenlijk dat je voor een bepaalde personen een view maakt met de velden die men alleen mag veranderen. Dit is geen probleem.
Alleen ik wil nu een row in de view veranderen, dit kan ook, maar ik heb geen unieke ID voor een view. In een 'Normale' tabel kun je de primary key opvragen. Heb je ook een uniek ID voor een view?

Verwijderd

Als je die in je view hebt opgenomen wel. Een view is namelijk een afgeleide van een oorspronkelijke tabel (of meerderen) dus als je het ID hier ook bi jzet, kan je die gebruiken.

:7

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 26-08 07:51

mulder

ik spuug op het trottoir

Volgens mij is een view een presentatie van een (of meerdere) record(s). En een record heeft een ID. Dus als jij dat ID opneemt in je view...

oogjes open, snaveltjes dicht


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Hm, je redenering is een beetje vreemd...

Je hebt voor een view geen unieke id omdat je ook niet iets in de view verandert (feitelijk)maar in de tabel(len) waarop je een view hebt... cmiiw...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Verwijderd schreef op 19 december 2002 @ 14:18:
Als je die in je view hebt opgenomen wel. Een view is namelijk een afgeleide van een oorspronkelijke tabel (of meerderen) dus als je het ID hier ook bi jzet, kan je die gebruiken.

:7
Snap ik, maar het is een al bestaande database. Dus er zijn ook al views die ik niet gemaakt heb. En ik wil echt niet alle view gaan veranderen, want dat zijn er teveel.
Volgens mij is een view een presentatie van een (of meerdere) record(s). En een record heeft een ID. Dus als jij dat ID opneemt in je view...
klopt, maar dan moet ik dus bij elke view kijken uit welke tabellen hij de records gehaald heeft en dan van die tabellen de key gebruiken? :?

[ Voor 26% gewijzigd door Verwijderd op 19-12-2002 14:22 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 26-08 07:51

mulder

ik spuug op het trottoir

Verwijderd schreef op 19 december 2002 @ 14:20:
[...]


Snap ik, maar het is een al bestaande database. Dus er zijn ook al views die ik niet gemaakt heb. En ik wil echt niet alle view gaan veranderen, want dat zijn er teveel.


[...]


klopt, maar dan moet ik dus bij elke view kijken uit welke tabellen hij de records gehaald heeft en dan van die tabellen de key gebruiken? :?
Euumhhmm... ja?

oogjes open, snaveltjes dicht


Verwijderd

Tja, volgens mij is het dan een kwestie van kiezen of delen...

Je zal òf nieuwe views moeten aanmaken òf bestaande views moeten aanpassen. Verder is er misschien codematig nog iets te regelen!? Open recordset gebruiken ofzow???

Verwijderd

Topicstarter
ff een vraagje erbij, kun je als je alleen een naam hebt van een view terug vinden uit welke tabellen hij ontstaan is?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 26-08 07:51

mulder

ik spuug op het trottoir

nee

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
ok duidelijk. Niet echt het antwoord waar ik op hoopte. Maar toch bedank, ik zal ze hier op het bedrijf wel aan het werk zetten! Kunnen hun die views veranderen! :7

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Binnen Oracle kan je ook updaten via een view. Heb je dat al geprobeerd.
Anders kan je ook nog proberen gebruik te maken van de DD-tabellen van je DBMS en daaruit de tabel afleiden, wel een hoop geklooi, maar misschien dat je er iets aan hebt.

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op 19 december 2002 @ 14:58:
ff een vraagje erbij, kun je als je alleen een naam hebt van een view terug vinden uit welke tabellen hij ontstaan is?
Jawel, je kunt de definitie van de view ophalen uit sqlserver, en dan de T-SQL gaan scannen :P

Een View is een zeker select statement, pre-compiled. Achterhalen welke tabellen aan de view ten grondslag liggen lijkt me niet een actie die je echt nodig hebt bij het bouwen van een applicatie of het runnen van een applicatie.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op 19 december 2002 @ 14:16:
Ik ben met een webapplicatie bezig om toeganag te krijgen tot de Microsoft SQL database. Ik ben eigenlijk helemaal klaar daarmee. Nu wil men eigenlijk dat je voor een bepaalde personen een view maakt met de velden die men alleen mag veranderen. Dit is geen probleem. Alleen ik wil nu een row in de view veranderen, dit kan ook, maar ik heb geen unieke ID voor een view. In een 'Normale' tabel kun je de primary key opvragen. Heb je ook een uniek ID voor een view?
Nee, views hebben geen keys. Je kunt wel indices definieren op je view. Voor een select van een row binnen de view gebruik je gewoon een column van die view om een row te selecteren. Wil je zeker weten dat dat selectstatement ook 1 row selecteert en niet 20, definieer dan een unique index op een column van de view waarvan jij weet dat ze uniek moeten zijn. Dit kan alleen met SQLServer 2000 enterprise edition of developer edition. Zie books online voor details on indexed views.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
EfBe schreef op 19 December 2002 @ 20:47:
[...]

Nee, views hebben geen keys. Je kunt wel indices definieren op je view. Voor een select van een row binnen de view gebruik je gewoon een column van die view om een row te selecteren. Wil je zeker weten dat dat selectstatement ook 1 row selecteert en niet 20, definieer dan een unique index op een column van de view waarvan jij weet dat ze uniek moeten zijn. Dit kan alleen met SQLServer 2000 enterprise edition of developer edition. Zie books online voor details on indexed views.
Ok dit snap ik, is ook niet zo moeilijk, maar dat betekend dus wel dat alle views aangepast moeten worden. En het natuurlijk ook makkelijk om de tabellen te weten, kun je de key van die tebellen gebruiken. Dit heeft ook een extra voordeel, je kunt nu ook een beveiliging plaatsen zodat men geen key kan gaan veranderen. In mijn systeem is het de bedoeling dat alleen telefoon gegevens of dat zoort dingen van een persoon veranderd mogen worden en niet zijn unieke ID.

Verwijderd

Topicstarter
Ik ben nu bezig om een query te maken waarbij ik dus de tabellen van een view opvraag, volgens mij zou dit moeten werken, maar ik krijg steeds de verkeerde tabellen eruit:
code:
1
2
select table_name from INFORMATION_SCHEMA.VIEW_TABLE_USAGE
where view_name = 'Naam_van_view'


Doe ik hier iets fout? :/
Pagina: 1