sql >> Database >  >> RDS >> Mysql

Is er een MySQL-functie zoals de TIMESTAMP-kolom van SQL Server?

Ik weet niet zeker of ik begrijp waarom dit niet werkt voor uw scenario. Is TIMESTAMP gegarandeerd uniek in MS SQL Server?

Aha -- Ik zie dat in SQL Server timestamp een synoniem is voor rowversion wat een beetje lijkt op MySQL's AUTO_INCREMENT behalve dat het een nieuwe monotoon toenemende waarde genereert op UPDATE evenals op INSERT .

Nee, MySQL heeft zoiets niet. Evenmin ondersteunt MySQL een SEQUENCE object zoals Oracle of PostgreSQL of IBM DB2. Met een reeks kunt u bijvoorbeeld een nieuwe waarde genereren op basis van een trigger.

Ik heb uw bijgewerkte informatie in uw vraag gelezen, dus ik begrijp het probleem dat u probeert op te lossen.

Wat ik als een alternatieve oplossing heb gezien, is om een ​​ander kenmerk toe te voegen aan de tabel die je aan het verwerken bent, noem het is_processed of zoiets. Voer een NULL in wanneer u een nieuwe rij invoegt. Als je eraan toe bent om het te verwerken, verander dan de waarde in die kolom in 1. Dan weet je altijd welke rijen je nog moet verwerken -- dit zijn de rijen waar is_processed IS NULL .

Over uw opmerking:Oké, ik zie het probleem. Elke gebruiker heeft zijn eigen weergave nodig van welke rijen nieuw/gewijzigd zijn.

Een andere hack die ik in MySQL heb gezien om een ​​reeksobject te simuleren, is een tabel die een primaire sleutel voor automatisch verhogen bevat en niets anders. U kunt nieuwe unieke monotoon toenemende waarden genereren door deze in deze tabel in te voeren en vervolgens de invoeging terug te draaien.

CREATE TABLE sequence (id SERIAL) ENGINE=InnoDB; -- Must be InnoDB

START TRANSACTION;
INSERT INTO sequence () VALUES (); -- Yes this is a legal statement.
ROLLBACK;

SELECT LAST_INSERT_ID();

U kunt geen transacties starten en terugdraaien binnen een MySQL-trigger, dus u moet de nieuwe waarden in uw applicatiecode genereren.

Of je kunt overschakelen naar PostgreSQL en echte ondersteuning krijgen voor reeksen.



  1. Een AWS Postgres RDS-tabel exporteren naar AWS S3

  2. Wat is het verschil tussen varchar en varchar2 in Oracle?

  3. Git bash op Windows 7. mysqldump-opdracht werkt niet

  4. Een procedure uitvoeren met de DBMS_SCHEDULER.CREATE_JOB-procedure