» »

[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

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.

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...

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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[SQL] primary key inkrementalno dodajanje (strani: 1 2 )

Oddelek: Programiranje
515247 (4437) ejresnevem
»

oracle 12 identity (the old way)

Oddelek: Programiranje
61045 (850) detroit
»

PostgreSQL pomoč

Oddelek: Programiranje
162485 (1978) Mato989
»

SQL problem

Oddelek: Programiranje
141660 (1278) win64
»

[T-SQL] Kako vnest podatek v bazo in da ti hkrati vrne id?

Oddelek: Programiranje
162858 (2576) dmok

Več podobnih tem