Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

...there can only be one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause??

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von jmar83, 19 September 2018.

  1. jmar83

    jmar83 Datenbank-Guru

    Hallo zusammen

    Ich bekomme diese Fehlermeldung, wenn ich die Tabelle "virtual_swich" 1:1 erweitern will:


    SHOW WARNINGS;

    USE relay;

    set @var=if((SELECT true FROM information_schema.TABLE_CONSTRAINTS WHERE
    CONSTRAINT_SCHEMA = DATABASE() AND
    TABLE_NAME = 'virtual_switch_hierarchy' AND
    CONSTRAINT_NAME = 'fk_virtual_switch_hierarchy' AND
    CONSTRAINT_TYPE = 'FOREIGN KEY') = true,'ALTER TABLE virtual_switch_hierarchy
    drop foreign key fk_virtual_switch_hierarchy','select 1');

    prepare stmt from @var;
    execute stmt;
    deallocate prepare stmt;


    DROP TABLE IF EXISTS virtual_switch_hierarchy;

    CREATE TABLE IF NOT EXISTS virtual_switch_hierarchy (
    taster_id INT NOT NULL AUTO_INCREMENT,
    created_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (taster_id),
    UNIQUE INDEX id_UNIQUE (taster_id ASC),
    CONSTRAINT fk_virtual_switch_hierarchy
    FOREIGN KEY (taster_id)
    REFERENCES virtual_switch (taster_id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
    ENGINE = InnoDB
    AUTO_INCREMENT = 1
    DEFAULT CHARACTER SET = utf8;



    ...aber warum geht denn das hier, das entbehrt sich ja jeglicher Logik:

    Define one-to-one relationship in MySQL | ADMFactory.com

    ???

    Danke für die Feedbacks!
     
  2. jmar83

    jmar83 Datenbank-Guru

    SQL-Codeformtierung scheint's hier nicht geben, sehe ich das korrekt? Jedenfalls finde ich keine entsprechende Option in der Toolbar...(?)
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Formatierung geht via code - Blöcke, siehe Hilfe.

    Und ja: Willkommen in der wunderbaren Welt von MySQL!
     
  4. jmar83

    jmar83 Datenbank-Guru

    "Formatierung geht via code - Blöcke, siehe Hilfe.

    Und ja: Willkommen in der wunderbaren Welt von MySQL!"



    Vielen Dank! ;-)
     
  5. jmar83

    jmar83 Datenbank-Guru

    Ich erinnere mich, dass ich das lezte Mal 2 Trigger "gebastelt" habe um createdOn und updatedOn zu bewerkstelligen - na ja, zur "wunderbaren" Welt von MySQL.

    Als Anfänger würde mich jeodoch keineswegs sehen, aber trotzdem gibt's ständig wieder Stress mit diesem MySQL-"Zeugs", na ja...
     
  6. akretschmer

    akretschmer Datenbank-Guru

  7. akretschmer

    akretschmer Datenbank-Guru

    Nun ja, es gibt ja Alternativen. Muß man halt nur nutzen. Davon abgesehen daß ich auch in PG da einen TRIGGER nehmen würde bzw. müßte.
     
  8. jmar83

    jmar83 Datenbank-Guru

    Danke, hat geklappt.

    Eben, hier geht's ja auch:

    Code:
    SHOW WARNINGS;
    
    USE db;
    
    DROP TABLE IF EXISTS user_detail;
    DROP TABLE IF EXISTS user;
    
    CREATE TABLE IF NOT EXISTS user (
      id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
      name VARCHAR(255) NOT NULL,
      email VARCHAR(255) NOT NULL,
      password VARCHAR(255) NOT NULL,
      created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
      updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (id),
      UNIQUE INDEX email_UNIQUE (email ASC),
      UNIQUE INDEX id_UNIQUE (id ASC))
    ENGINE = InnoDB
    AUTO_INCREMENT = 1
    DEFAULT CHARACTER SET = utf8;
    
    
    CREATE TABLE IF NOT EXISTS user_detail (
      id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
      address VARCHAR(255) NULL DEFAULT NULL,
      postal_code VARCHAR(20) NULL DEFAULT NULL,
      city VARCHAR(100) NULL DEFAULT NULL,
      phone_number VARCHAR(45) NULL DEFAULT NULL,
      created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
      updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (id),
      UNIQUE INDEX id_UNIQUE (id ASC),
      CONSTRAINT fk_user_detail_user
        FOREIGN KEY (id)
        REFERENCES user (id)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB
    AUTO_INCREMENT = 1
    DEFAULT CHARACTER SET = utf8;
    
    (Define one-to-one relationship in MySQL | ADMFactory.com )
     
  9. jmar83

    jmar83 Datenbank-Guru

    Die unterschiedliche Version war das Problem, auf dem Rechner wo ich das oben gezeigte Beispiel eingesetzt habe läuft praktisch das neuste XAMPP. (Zum üben und testen)

    Auf dem Raspi wo ich die virtual_switch-Tabelle erweitern wollte, leider nicht...;-)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden