2017-08-31 3 views
0

次のSQL Statemantを実行しようとするとエラーが発生します: SQL:TRUNCATE $ table CASCADE;MariaDB 10.1テーブルカスケード構文エラーを切り捨てます

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

MariaDBに削除カスケードであるか、間違った聖霊降臨祭のSQL文の何かがあるのでしょうか?

+1

https://dev.mysql.com/doc/refman/5.7/en/truncate -table.html私はここに「CASCADE」というキーワードが表示されていないのですが、mysqlがまったくサポートしていると確信していますか? –

+0

カスケードは、親子階層内で親レコードが削除されたときに子レコードを削除するときに依存関係が使用されることがある関連するレコードを削除または更新するために使用され、参照整合性を維持します。 - ここでは1つのテーブルを切り捨てようとしていますか? – jimmy8ball

+0

私はテーブルを切り捨て、また、他のテーブルのすべての関連するレコードを削除しようとします。 –

答えて

0

削除と更新をカスケードする場合は、テーブルが作成または変更されたときに定義を保存し、キー(または関連するテーブルのFK)に適用する必要があります。親レコードが削除されたときのテーブル。資源の多くは、私はここに1つずつリストしている、この上ありますhttps://mariadb.com/kb/en/the-mariadb-library/foreign-keys/ - このリソースから撮影下の例である:

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

'TRUNCATE'は' ON DELETE CASCADE'を無視します。 'DELETE'文を使わなければなりません。 –

関連する問題