sql >> Databáze >  >> RDS >> Mysql

MySQL:existuje něco jako interní identifikátor záznamu pro každý záznam v tabulce MySQL?

AFAIK žádný takový jedinečný interní identifikátor (řekněme jednoduché ID řádku) neexistuje.

můžete možná být schopen spustit SELECT bez jakéhokoli řazení a poté získat n-tý řádek pomocí LIMIT . Za jakých podmínek je použití spolehlivé a bezpečné, by měl mySQL Guru potvrdit. Pravděpodobně nikdy není.

Zkuste si pohrát s phpMyAdmin , webový frontend k mySQL. Je navržen tak, aby si poradil se špatně navrženými stoly bez klíčů. Pokud si dobře pamatuji, používá vše sloupců, kterých se v takových případech může dostat:

UPDATE xyz set a = b WHERE 'fieldname'  = 'value' 
                       AND 'fieldname2' = 'value2' 
                       AND 'fieldname3' = 'value3' 
                       LIMIT 0,1;

a tak dále.

To samozřejmě také není zcela bezpečné pro duplikáty.

Jediný nápad, který mě napadá, je přidat klíčový sloupec za běhu a po dokončení aplikace jej odstranit. Je to nápad, který vyvolává husí kůži, ale možná lepší než nic.



  1. Jak odstranit omezení z mé tabulky MySQL?

  2. Auto Increment Column – Sekvence jako výchozí hodnota v Oracle

  3. Udělte vše na konkrétním schématu v db skupinové roli v PostgreSQL

  4. proč rozdělujeme mysql tabulku na mnoho menších tabulek?