2017-08-31 3 views
0

Wenn ich versuche, die folgende sql statemant MariaDB auszuführen, geben Sie einen Fehler ein: SQL: TRUNCATE $ table CASCADE;MariaDB 10.1 Tabellenkaskaden-Syntaxfehler abschneiden

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CASCADE' at line 1 (SQL: TRUNCATE wortmann_products CASCADE;)

wird Kaskade in MariaDB entfernt oder es ist etwas falsch Whit die SQL-Anweisung?

+1

https://dev.mysql.com/doc/refman/5.7/en/truncate -table.html Ich sehe hier nicht das Schlüsselwort 'CASCADE' Sind Sie sicher, dass es überhaupt von MySQL unterstützt wurde? –

+0

cascade wird verwendet, um verknüpfte Datensätze zu löschen oder zu aktualisieren, wenn eine Abhängigkeit gefunden wird, die manchmal beim Löschen eines untergeordneten Datensatzes in einer übergeordneten Kindhierarchie verwendet wird, und der übergeordnete Datensatz gelöscht wird. Dies hilft bei der Wahrung der referenziellen Integrität - in diesem Fall löscht sie normalerweise Kaskaden. - Willst du hier nur 1 Tabelle abschneiden? – jimmy8ball

+0

Ich versuche, eine Tabelle zu kürzen und auch alle zugehörigen Datensätze in anderen Tabellen zu löschen. –

Antwort

0

Wenn Sie Löschvorgänge und Aktualisierungen in Kaskade verschieben möchten, muss die Definition beim Erstellen oder Ändern der Tabelle gespeichert werden und auf die Schlüssel (oder FKs in verknüpften Tabellen) angewendet werden, sodass untergeordnete Datensätze gelöscht werden können Tabelle, wenn der Elterndatensatz gelöscht wird. Es gibt viele Ressourcen auf diesen ist, habe ich eine hier aufgeführt: https://mariadb.com/kb/en/the-mariadb-library/foreign-keys/ - Entnommen aus dieser Ressource ist das folgende Beispiel:

CREATE TABLE author (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    name VARCHAR(100) NOT NULL 
) ENGINE = InnoDB; 

CREATE TABLE book (
    id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    title VARCHAR(200) NOT NULL, 
    author_id SMALLINT UNSIGNED NOT NULL, 
    CONSTRAINT `fk_book_author` 
     FOREIGN KEY (author_id) REFERENCES author (id) 
     ON DELETE CASCADE 
     ON UPDATE RESTRICT 
) ENGINE = InnoDB; 
+0

Und bedenken Sie, dass 'TRUNCATE'' ON DELETE CASCADE' ignoriert; Sie müssen die DELETE-Anweisung verwenden. –

Verwandte Themen