sql >> Database teknologi >  >> RDS >> Mysql

Få primære nøgler påvirket efter valg, opdatering eller indsættelse kun ved hjælp af SQL?

SELECT LAST_INSERT_ID();

Og seriøst, ved at sætte "primær nøgle fra indsæt mysql" i Google får du et Stack Overflow-svar som det første resultat.

EDIT:mere diskussion baseret på kommentarer.

Hvis du vil se, hvilke rækker der er påvirket af en opdatering, skal du blot lave en SELECT med samme WHERE-sætning og JOIN-kriterier som UPDATE-sætningen, f.eks.:

UPDATE foo SET a = 5 WHERE b > 10;

SELECT id FROM foo WHERE b > 10;

Hvis du INDSÆTTER i en tabel, der ikke har en primær nøgle til automatisk stigning, behøver du ikke at gøre noget særligt. Du ved allerede, hvad den nye primærnøgle er, fordi du selv indstiller den i INSERT-sætningen. Hvis du vil have kode, der kan håndtere INSERT-sætninger, der kommer uden for koden, som vil spore PK-ændringer, skal du enten parse INSERT-sætningen eller få den kaldende kode til at give information om den primære nøgle.




  1. Visual Studio - Kunne ikke linke MySql-databasetabel til DataSet

  2. Vil jeg gå glip af nogen ændringer, hvis jeg erstatter en oracle-udløser, mens min applikation kører?

  3. Hvordan gemmer man tags i MySQL-tags, et felt i alt eller et indgivet for hvert tag?

  4. oracle-forespørgsel - ORA-01652:ude af stand til at udvide temp-segmentet, men kun i nogle versioner af sql*plus