Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy istnieje funkcja MySQL, taka jak kolumna TIMESTAMP programu SQL Server?

Nie jestem pewien, czy rozumiem, dlaczego to nie działa w twoim scenariuszu. Czy TIMESTAMP gwarantowana unikalność w MS SQL Server?

Aha — widzę, że znacznik czasu SQL Server jest synonimem rowversion co jest czymś w rodzaju AUTO_INCREMENT w MySQL z wyjątkiem tego, że generuje nową monotonicznie rosnącą wartość w UPDATE jak również na INSERT .

Nie, MySQL nie ma niczego takiego. MySQL nie obsługuje również SEQUENCE obiekt taki jak Oracle, PostgreSQL lub IBM DB2. Sekwencja pozwoliłaby na przykład wygenerować nową wartość z wyzwalacza.

Przeczytałem Twoje zaktualizowane informacje w Twoim pytaniu, więc rozumiem problem, który próbujesz rozwiązać.

To, co widziałem jako alternatywne rozwiązanie, to dodanie kolejnego atrybutu w tabeli, którą przetwarzasz, nazwij go is_processed lub coś. Wprowadź NULL podczas wstawiania nowego wiersza. Kiedy zaczniesz go przetwarzać, zmień wartość w tej kolumnie na 1. Wtedy zawsze będziesz wiedzieć, które wiersze masz jeszcze do przetworzenia — będą to wiersze, w których is_processed IS NULL .

Odp. Twój komentarz:OK, widzę problem. Każdy użytkownik potrzebuje własnego widoku, które wiersze są nowe/zmienione.

Innym hackiem używanym w MySQL do symulowania obiektu sekwencji jest tabela zawierająca klucz podstawowy autoinkrementacji i nic więcej. Możesz wygenerować nowe, unikalne, monotonicznie rosnące wartości, wstawiając je do tej tabeli, a następnie cofnij wstawianie.

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();

Nie możesz rozpocząć i wycofać transakcji w wyzwalaczu MySQL, więc będziesz musiał wygenerować nowe wartości w kodzie aplikacji.

Możesz też przełączyć się na PostgreSQL i uzyskać prawdziwe wsparcie dla sekwencji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz wiersze z jednej tabeli, połącz ostatni wiersz z innej tabeli w relacji jeden-do-wielu

  2. jak pokazać ukryty wiersz tabeli html na podstawie warunku php?

  3. Zaktualizuj kolumnę w bazie danych, w której maksymalna wartość php mysql

  4. Jak ustawić limit czasu zapytania ActiveRecord dla mysql?

  5. Konwertuj datę na format daty MYSQL