posiadam taki oto problem:
Mam tabele characters, która przechowuje postacie pewnej gry. Tabela ma mniej-więcej takie pola:
order,
account_id,
name
itd.
Każde konto może posiadać maksymalnie pięć postaci. Powiedzmy, że mam przykładowe dane typu:
Kod
order | account_id | name
1 | f1x | test
2 | f1x | test2
3 | f1x | test3
4 | f1x | test4
5 | f1x | test5
1 | f1x | test
2 | f1x | test2
3 | f1x | test3
4 | f1x | test4
5 | f1x | test5
I teraz powiedzmy, że usuwam drugi i trzeci rekord. Zostaje mi:
Kod
order | account_id | name
1 | f1x | test
4 | f1x | test4
5 | f1x | test5
1 | f1x | test
4 | f1x | test4
5 | f1x | test5
Teraz chciałbym dodać 1 rekord i tutaj zaczyna się mój problem. W jaki sposób skonstruować zapytanie, aby nowo dodany rekord w kolumnie Order miał pierwszą wolną liczbę całkowitą z przedziału liczbowego <1, 5>. Po dodaniu rekordu dane miałyby wyglądać tak:
Kod
order | account_id | name
1 | f1x | test
2 | f1x | NOWY
4 | f1x | test4
5 | f1x | test5
1 | f1x | test
2 | f1x | NOWY
4 | f1x | test4
5 | f1x | test5
Jedyne, co przychodzi mi do głowy, to stworzyć procedurę składowaną, która będzie pobierała SELECT COUNT(*) FROM characters WHERE account_id = f1x AND order = 1 - i tak dalej, aż do order równego 5, i gdzie COUNT == 0, to zwrócić order. Ale jest to raczej niewydajne
