[ draksa @ 05.04.2007. 16:58 ] @
Imam sledecu tablelu:
create table Lista
(
ID int primary key not null,
Naziv nvarchar(50) not null,
UserName nvarchar(20) not null
)

Prilikom svako novog unosa hocu da ID bude za 1 veci od narednog. Kako da to izvedem?

Znam da trenutno najveci ID dobijam kao:
select max(id) from Lista; ,
ali nemam pojma kako da to uklopim u insert naredbu sa Naziv-om i UserName-om. Bilo bi lepo da mi neko napise primer u kome se unosi nova lista sa nazivom:'blablabla' za username='tralala':))
Unapred hvala!

[ Miloš Baić @ 05.04.2007. 17:44 ] @
Nisi rekao koji DBMS koristiš, da dobiješ konkretan odgovor?
Većina ima "autoincrement", a ako ga ne koristiš to možeš i ručno iz same aplikacije.
Za određeni atribut (u tvom slučaju ID) pronađeš onaj sa najvećom vrednošću i povećaš ga za jedan. Ako nema ni jedan slog, konstatuješ nulu i dodeliš vrednost 1. Ukoliko se obriše neki slog, dolazi do izmene redosleda, rupa, pa ako DBMS to sam ne update -uje, bila je tema i o tome, pa pogledaj SQL Mozgalica br. 3...
[ draksa @ 05.04.2007. 18:14 ] @
Zaboravih da navedem DBMS.
Dakle radi se o SQL Server Express.
[ draksa @ 05.04.2007. 21:25 ] @
Jos jedna napomena:
Ja znam sta treba da uradim ali to ne umem:((!!

Dakle, znam da je potrebno da pronadjem element sa najvecim ID-om i da ga povecam za jedan. Ali je problem sto ne umem da napisem sql naredbu koja to radi u okviru insert naredbe. Samo pronalazenje najveceg ID-a nije nikakav problem ali to ne umem da uklopim u INSERT!

Kako treba da izgleda insert naredba koja to odradjuje?

[ DarkMan @ 06.04.2007. 15:26 ] @
Prvi nacin - preko varijable:
Code:

  declare @id int

  select @id = max(ID) + 1 from Lista

  insert into Lista(ID, Naziv, UserName) values(@id, 'naziv', 'username')



Drugi nacin - direktno umetanje selecta:
Code:


  insert into Lista(ID, Naziv, UserName)
  select max(ID) + 1, 'naziv, 'username' 
    from Lista

[ zelbi @ 12.04.2007. 02:26 ] @
create table Lista
(
ID int identity(1, 1) primary key not null,
Naziv nvarchar(50) not null,
UserName nvarchar(20) not null
)


autoincrement ti je identity(1, 1) u MS SQL i to je najbolje rijesenje.

ako upotrebljavas max(id) obavezno blokiraj cijelu tabelu :

Code:

declare @id int
select @id = max(ID) + 1 from Lista With(TablockX)
insert into Lista(ID, Naziv, UserName) values(@id, 'naziv', 'username')