Het volgende probleem ben ik vaker tegengekomen, maar ik wil toch graag een elegantere oplossing toepassen dan ik tot nu toe heb gedaan.
Stel je een tabel, User, voor met drie velden: id [primary key], name [string] en priority [int]. Nu wil ik ieder nieuwe record dat wordt aangemaakt automatisch voorzien van het hoogste getal voor priority. Tot nu toe deed ik dit door eerst het hoogste getal op te roepen:
SELECT Max(priority.priority)+1 AS MaxOfpriority FROM priority;
En daarna dat getal in een insert te verwerken. Maar dit moet toch in een keer kunnen?
Ik heb geprobeerd iets te doen met
INSERT INTO User (id, name, priority) VALUES ("md5-something", "bob de bouwer",
(
SELECT Max(priority As priority_2)+1 AS MaxOfpriority FROM User As User_2;
)
)
Maar dat werkt natuurlijk weer niet... Ook op Google en in mijn database-boeken heb ik geen oplossing kunnen vinden. Ook het toewijzen van een auto veld aan priority is niet handig, omdat ik die prioriteiten wel wil kunnen swappen.
Heeft iemand hier een charmante oplossing voor? Het scheelt namelijk een hoop geprogrammeer elke keer.
Groet,
Jo3p
Stel je een tabel, User, voor met drie velden: id [primary key], name [string] en priority [int]. Nu wil ik ieder nieuwe record dat wordt aangemaakt automatisch voorzien van het hoogste getal voor priority. Tot nu toe deed ik dit door eerst het hoogste getal op te roepen:
SELECT Max(priority.priority)+1 AS MaxOfpriority FROM priority;
En daarna dat getal in een insert te verwerken. Maar dit moet toch in een keer kunnen?
Ik heb geprobeerd iets te doen met
INSERT INTO User (id, name, priority) VALUES ("md5-something", "bob de bouwer",
(
SELECT Max(priority As priority_2)+1 AS MaxOfpriority FROM User As User_2;
)
)
Maar dat werkt natuurlijk weer niet... Ook op Google en in mijn database-boeken heb ik geen oplossing kunnen vinden. Ook het toewijzen van een auto veld aan priority is niet handig, omdat ik die prioriteiten wel wil kunnen swappen.
Heeft iemand hier een charmante oplossing voor? Het scheelt namelijk een hoop geprogrammeer elke keer.
Groet,
Jo3p