Toon posts:

[MySQL] id-veld + prim. key in bestaande db voegen lukt nie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een bestaande mysql database maar daar zit geen id-veld in. Ik gebruik Mysql front (wysiwyg tool) om mysql databases te beheren.

Ik wil dus een id-veld toevoegen met de parameters int, not null, primary key, auto increment. Dat doet ie niet ineens.
Ik moet eerst het id-veld aanmaken zonder parameters. (nu wordt het ingewikkeld)
Dan wil ik daar de primary key aanhangen maar dan moet ie ook not null zijn.
Als ik dan voor de primary key, not null toe wijs dan zet ie allemaal nullen in de records. Als ik daarna weer auto increment en primary key toe wijs dan loopt ie te bleren dat er duplicate waarden zijn (die nullen dus).

ik heb echt alle volgordes geprobeerd. werkt niet. Weet iemand wat ik verkeerd doe en kan iemand me vertellen wat de mysql query is om een veld aan te maken met de parameters; int, not null, primary key, auto increment.
Iets met Alter?

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 24-08 12:10

Freee!!

Trotse papa van Toon en Len!

Voeg eerst het veld toe (int) met waarde 0, vul het dan (ik ken MySQL niet, maar kun je het record/rownummer gebruiken), bijvoorkeur met een update opdracht die op een andere manier dan autoincrement een oplopend nummer in alle rijen zet. Als alles gevuld is, zet dan de rest van de parameters als not null, primary key en autoincrement.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Wat ook kan:
maak een nieuwe tabel met dezelfde specificaties als je huidige _en_ een extra auto-increment kolom met daarop je primary key.

En dan zoiets:
code:
1
INSERT INTO nieuwe_tabel (alle, kolommen, behalve, de, auto_increment) SELECT geef, de, kolommen, op FROM oude_tabel;

Drop de oude tabel en hernoem de nieuwe tabel, vergeet niet eventuele indices opnieuw te maken.

Verwijderd

euh... ik weet niet of je met MySQL front ook gewoon queries kunt uitvoeren... maar via een gewone SQL query moet t gewoon kunnen:

ALTER TABLE tabel_naam ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

dat werkt iig. bij mij wel altijd :)

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 24-08 12:10

Freee!!

Trotse papa van Toon en Len!

ACM schreef op 06 February 2003 @ 16:56:
Wat ook kan:
maak een nieuwe tabel met dezelfde specificaties als je huidige _en_ een extra auto-increment kolom met daarop je primary key.

En dan zoiets:
code:
1
2
3
INSERT INTO nieuwe_tabel (alle, kolommen, behalve, de, 

auto_increment) SELECT geef, de, kolommen, op FROM oude_tabel;

Drop de oude tabel en hernoem de nieuwe tabel, vergeet niet eventuele indices opnieuw te maken.
Hier had ik ook al aan gedacht, maar één ding weet ik wel van MySQL en dat is dat het geen subqueries accepteerd.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

haha :)
dit ondersteund mysql nou weer net wel ;)

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 24-08 12:10

Freee!!

Trotse papa van Toon en Len!

ACM schreef op 06 februari 2003 @ 17:15:
haha :)
dit ondersteund mysql nou weer net wel ;)
Dan is dat inderdaad de beste methode. _/-\o_ _/-\o_

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT

Pagina: 1