Mysql
 sql >> база данни >  >> RDS >> Mysql

Стойност по подразбиране СЕГА от две колони на MySQL ГРЕШКА 1067

Можете да имате само един колона с времеви печат, която по подразбиране е CURRENT_TIMESTAMP или NOW() на маса. Това е добре известна грешка в MySQL.

За да преодолеете това, направете вашата стойност по подразбиране за създадената колона валидна стойност на времеви печат, след което вмъкнете клеймото за време в кода на приложението си CRUD. Използвайте NOW() или CURRENT_TIMESTAMP за вашата актуализирана колона по подразбиране.

Референтен материал:http://dev.mysql.com/doc/ refman/5.1/en/timestamp.html

За да илюстрирате допълнително недостатъка на MySQL в тази област, разгледайте следния код:

CREATE TABLE testing_timestamps (
  id INT NOT NULL AUTO_INCREMENT,
  pk_id INT NOT NULL,
  col1 TIMESTAMP DEFAULT 0,
  col2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY(id)
);

delimiter $$
CREATE TRIGGER testing_timestamps_trigger
  AFTER INSERT ON testing_timestamps
  FOR EACH ROW 
  BEGIN
    UPDATE testing_timestamps SET col1 = NOW() WHERE id = MAX(id);
  END;
$$
delimiter ;

INSERT INTO testing_timestamps (id) VALUES (0);

Резултатът от това ще покаже:

mysql> INSERT INTO testing_timestamps (id) VALUES (0);
ERROR 1442 (HY000): Can't update table 'testing_timestamps' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

Това е неприятно, защото използването на тригер в този случай би било добра работа.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да актуализирате централна таблица с помощта на Eloquent в laravel 5

  2. Как мога да избягам от входа към MySQL db в Python3?

  3. Грешка в MySQL #2014 - Командите не са синхронизирани; не можете да изпълните тази команда сега

  4. как да проверя персонализираната таблица на WordPress е празна или не

  5. Кой йерархичен модел трябва да използвам? Съседство, вложени или изброени?