Get id után betét

Feladat. hogy az azonosító csak hozzá a felvétel asztalra.
A szükséges feltétel. Az asztal legyen AUTO_INCREMENT területen.

  1. Visszaállítása (változás) érték Következő autoindex MySQL: ALTER TABLE `table_name` AUTO_INCREMENT = 238;
  2. Amikor az INSERT kérést, hogy több bejegyzést (beilleszteni `table_name` (field1, ..., fieldm) értékek (value11 ', ..., 'value1m'), ..., (valuen1', ..., 'valuenm');) MySQL mint LAST_INSERT_ID azonosítóját adja vissza az első rekord kerül beillesztésre. és nem az utolsó, mint azt gondolnánk.
  3. Egyes változatai MySQL volt egy hiba. ha sikertelen a parancs INSERT MELLŐZ (ha egy egyedi kulcs már létezik, és semmi nem adunk) LAST_INSERT_ID visszaadja a következő rendelkezésre álló értéke auto-növekmény.
  4. Ne használjon LAST_INSERT_ID, mikor kell használni, ez lehetetlen. Option „gyorsan írni, hogy az adatbázis, és azonnal, hogy a SELECT maximális értéke auto-növekmény” szörnyű és instabil.

baszva a praktikus.

Emberek, és ha a vegyületek 10-15. Nos, ez 10-15 obnovremenno működni az adatbázisban. Van egy hatalmas lehetőség,. ezek egymással is, hogy a betét és az adatokat meg kell fordítani.

Ezért kell használni LAST_INSERT_ID, és nem a negyedik lehetőség.

MS SQL helyett @@ IDENTITY jobb felhasználása SCOPE_IDENTITY (). Ellenkező esetben az első betétet a trigger vezet zavaros és trudnovyyavlyaemym hibákat.

A legjobb megoldás - ez
válassza max (id) táblázatból;

varle. a lehetőség - ez a legjobb módja annak, hogy valaki más azonosító frissen készített. Nincs garancia arra, hogy a között, a insertom és selectom nem fér még egy betétet. Találd akinek ID Ön visszaküldi a max (id)

ha mégis betétet, és válassza ki az egyik ügyletet, akkor lehetőség van)

MS SQL.
Egy másik változat szerint (amellett, hogy a „standard” auto-növekmény) gombot, hogy további. mező (VARCHAR).
És azonosítja (a GUID) ezen a téren egy string:

létrehozni eljárás [dbo]. [Str_GUID]
(
@sGUID varchar (50) OUTPUT
)
AS
BEGIN
/ *
GUID kiszámítja és visszaküldi a karakteres ábrázolása (nem elválasztva)
például:
DECLARE @Sx varchar (50)
Végrehajtás dbo.Str_GUID @Sx OUTPUT
válassza @Sx, len (@Sx)
* /
DECLARE @myid UniqueIdentifier
SET @myid = NEWID ()
meghatározott @ sGUID = öntött (@myid VARCHAR (50))
meghatározott @ sGUID = felső (RTrim (LTrim (REPLACE (@sGUID. '-', ''))))
VISSZA
VÉGE

Szólj hozzá

Kapcsolódó cikkek