[SQL] primary key definieren via Visual Basic *

Pagina: 1
Acties:

  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
Hallo Tweakers,

Ik heb weer eens wat SQL-hulp nodig 8)7

Via VB6 doe ik aanpassingen in een MS Access database. In een tabel bestaat een primare sleutel Monsternr. Ik heb zojuist een extra kolom MonsterID aangemaakt, nu wil ik van MonsterID de primaire sleutel maken en Monsternr verwijderen, maar ik loop tegen een aantal errors aan.

Monsternr verwijderen lukt me niet omdat er relaties bestaan met andere tabellen. Ik kan de relatie niet verwijderen aangezien ik deze niet heb aangemaakt via VB, en deze dus ook geen naam toegewezen heb. Verwijderen is dan namelijk niet mogelijk. Eerst de relatie definieren lukt ook niet, want dan maakt hij een tweede zelfde relatie aan.

Statements als:

"alter table Monsters add primary key (Monsternr)" werken niet, want dan geeft ie de melding dat er al een primaire sleutel bestaat.

Het handigst zou zijn dat ik Monsternr gewoon kan hernoemen naar MonsterID (en het gegevenstype van tekst over kan zetten naar integer), maar een functie als rename of modify werkt niet, ik heb een soortgelijk statement nodig voor ADO.

Kan iemand mij een helpende hand bieden?

Thanx!! 8)

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:33
Doe eerst eens
code:
1
2
ALTER TABLE blaat
 DROP PRIMARY KEY ...


Ik zit me trouwens af te vragen waarom jij al die DDL statements nodig hebt vanuit je VB applicatie? :? Volgens mij klopt er dan iets niet aan je design ofzo, maar dat is natuurlijk voorbarig want ik weet niet welke app je aan het maken bent.

[ Voor 64% gewijzigd door whoami op 03-06-2004 10:40 ]

https://fgheysels.github.io/


  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
whoami schreef op 03 juni 2004 @ 10:39:
Doe eerst eens
code:
1
2
ALTER TABLE blaat
 DROP PRIMARY KEY ...
Lukt niet, al geprobeerd:

"alter table Monsters drop primary key (Monsternr)"

Error: "de instructie Alter Table bevat een syntaxisfout"

  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
whoami schreef op 03 juni 2004 @ 10:39:
Doe eerst eens
code:
1
2
ALTER TABLE blaat
 DROP PRIMARY KEY ...


Ik zit me trouwens af te vragen waarom jij al die DDL statements nodig hebt vanuit je VB applicatie? :? Volgens mij klopt er dan iets niet aan je design ofzo, maar dat is natuurlijk voorbarig want ik weet niet welke app je aan het maken bent.
Ik moet een grote migratieslag uitvoeren op een database, en de opdracht is om de hele migratie te automatiseren. Geen handmatige bewerkingen dus. Vandaar :/

Verwijderd

Migraties waarbij primary keys veranderen zijn altijd erg lastig. Wat is precies het doel van de wijziging die je hier beschrijft. Is het alleen de bedoeling dat de kolom Monsternr (tevens primary key) hernoemt moet worden naar MonsterId?

  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
Verwijderd schreef op 03 juni 2004 @ 10:50:
Migraties waarbij primary keys veranderen zijn altijd erg lastig. Wat is precies het doel van de wijziging die je hier beschrijft. Is het alleen de bedoeling dat de kolom Monsternr (tevens primary key) hernoemt moet worden naar MonsterId?
Ja, dat is de bedoeling inderdaad....

Simpele statements als Rename of Modify accepteert ie niet....

Verwijderd

Ik denk dat je het waarschijnlijk in deze volgorde moet doen.

1) Nieuwe kolom MonsterId toevoegen
2) alle waarden van Monsternr kopieren naar MonsterId
3) alle relaties naar andere tabellen waarin Monsternr voorkomt veranderen zodat MonsterId gebruikt wordt
4) Monsternr veranderen zodat het geen primary key meer is
5) MonsterId de primary key maken.

Dit is het ruwe stappenplan. Voor de details zal je even moeten experimenteren welke DDL commandos je moet gebruiken. Met name het veranderen van de relaties en de primary key zou tricky kunnen zijn.

[edit]
en als laatste:
6) Monsternr verwijderen

[ Voor 7% gewijzigd door Verwijderd op 03-06-2004 10:58 ]


  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
Dank je, rmk.

Je voorstel om eerst nieuwe relaties te maken klinkt aannemelijk. Ik zal het gaan proberen en kom er later op terug.

Thanks! :)

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 12:48
is het al gelukt, collega? :+

  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
Working on it :r
Pagina: 1