Forum » Programiranje » [MSSQL] pridobitev id-ja
[MSSQL] pridobitev id-ja
robotek87 ::
Imam proceduro, katera shrani neke podatke o uporabniku...
Imam if stavek, ki pogleda ce uporabnik obstaja (ce ne, ga dodamo) na to pa klicem proceduro ki doda se opis v drugo tabelo.
--dodam uporabnika
...
--dodam opis
EXEC DodajOpis @@Identity,@opis
problem imam ce uporabnik ze obstaja (kako dobit njegov ID?)
poskusil sem
EXEC DodajOpis select top 1 id from uporabniki where...,@opis
pa ne gre:s
any ideas?
tnx
ps. baza je sql server 2005
Imam if stavek, ki pogleda ce uporabnik obstaja (ce ne, ga dodamo) na to pa klicem proceduro ki doda se opis v drugo tabelo.
--dodam uporabnika
...
--dodam opis
EXEC DodajOpis @@Identity,@opis
problem imam ce uporabnik ze obstaja (kako dobit njegov ID?)
poskusil sem
EXEC DodajOpis select top 1 id from uporabniki where...,@opis
pa ne gre:s
any ideas?
tnx
ps. baza je sql server 2005
- spremenil: robotek87 ()
Looooooka ::
naredis prej select stavek ki ti vrne id?
ce rezultat ni null naredis nov vnos...ce ne pa tako ali tako ze imas id
za vsak slucaj znotraj transakcije.
mysql podpira funkcijo update into (ta ti doda nov zapis oz obsojecega spremeni)...mssql tega zal ne podpira.
ce rezultat ni null naredis nov vnos...ce ne pa tako ali tako ze imas id
za vsak slucaj znotraj transakcije.
mysql podpira funkcijo update into (ta ti doda nov zapis oz obsojecega spremeni)...mssql tega zal ne podpira.
BlueRunner ::
Takole približno na pamet iz glave. Verjetno boš moral tu in tam popraviti sintakso. Ampak vzorec bi moram biti viden.
Pa namesto @@IDENTITY se navadi uporabljati SCOPE_IDENTITY(). Poglej v dokumentacijo in na Google zakaj...
Pa namesto @@IDENTITY se navadi uporabljati SCOPE_IDENTITY(). Poglej v dokumentacijo in na Google zakaj...
CREATE TABLE [test] ( [test_id] int IDENTITY(1, 1), [data] nvarchar(255) NOT NULL, CONSTRAINT [pk_test] PRIMARY KEY([test_id]), CONSTRAINT [ak_test__data] UNIQUE ([data]) ); GO INSERT INTO [test]([data]) VALUES ('data1'); INSERT INTO [test]([data]) VALUES ('data2'); GO DECLARE @test_id int; DECLARE @data nvarchar(255); -- To je podatek, ki ga poskušam vstaviti SET @data = 'data1'; -- To je način, kako ga pravilno vstavljam SET @test_id = (SELECT [test_id] FROM [test] WHERE [data] = 'data1'); IF @test_id IS NULL BEGIN INSERT INTO [test]([data]) VALUES(@data); SET @test_id = SCOPE_IDENTITY(); END; INSERT INTO [opis]([test_id], [opis]) VALUES(@test_id, 'Nek opis'); GO
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [SQL] primary key inkrementalno dodajanje (strani: 1 2 )Oddelek: Programiranje | 5465 (4655) | ejresnevem |
» | oracle 12 identity (the old way)Oddelek: Programiranje | 1066 (871) | detroit |
» | PostgreSQL pomočOddelek: Programiranje | 2520 (2013) | Mato989 |
» | SQL problemOddelek: Programiranje | 1699 (1317) | win64 |
» | [T-SQL] Kako vnest podatek v bazo in da ti hkrati vrne id?Oddelek: Programiranje | 2903 (2621) | dmok |