sql >> Database >  >> RDS >> Mysql

MySQL SELECT LAST_INSERT_ID() voor samengestelde sleutel. Is dit mogelijk?

Ja. U kunt niet meerdere velden voor automatisch ophogen in één tabel hebben.

CREATE TABLE foo (
  id1 int(11) NOT NULL auto_increment,
  id2 int(11) NOT NULL default '0',
  PRIMARY KEY  (id1, id2)
);

INSERT INTO foo VALUES (DEFAULT, 2);

SELECT LAST_INSERT_ID(); -- returns 1, the value generated for id1

LAST_INSERT_ID() geeft alleen de waarde terug voor een kolom die is gedeclareerd AUTO_INCREMENT . Er is geen functie om de waarde terug te geven in een samengestelde primaire sleutel die niet was gegenereerd door het systeem. Je zou die waarde al moeten weten, aangezien je hem zojuist in een INSERT . hebt gegeven uitspraak. Het lastige geval zou zijn wanneer een trigger of iets de waarde overschrijft.




  1. mysql-fout:FOUT 1018 (HY000):Kan de map van '.' niet lezen (fout:13)

  2. Waarschuwing:mysql_real_escape_string():Toegang geweigerd voor gebruiker 'root'@'localhost' (met wachtwoord:NEE) .../public_html/checklogin.php

  3. SWITCHOFFSET() Voorbeelden in SQL Server

  4. Hoe de Oracle-functie of opgeslagen procedure aan te roepen met behulp van het Spring persistentie-framework?