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

jmar83

SQL-Guru
Beiträge
146
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!
 
Werbung:
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...
 
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 )
 
Werbung:
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...;-)
 
Zurück
Oben