Contrary to the docs at 
http://www.h2database.com/html/grammar.html#alter_table_set
TRUNCATE TABLE is not allowed if referential integrity is disabled:


  CREATE TABLE a (
    id INT NOT NULL PRIMARY KEY,
    parent INT,
    CONSTRAINT fk_parent_child FOREIGN KEY (parent) REFERENCES (id) ON
DELETE CASCADE
  );

  INSERT INTO a VALUES (1,NULL);
  INSERT INTO a VALUES (2,1);

  TRUNCATE TABLE a; -- Error: cannot truncate "PUBLIC.A"; error code
[90106-137]

  ALTER TABLE a SET REFERENTIAL_INTEGRITY FALSE;

  TRUNCATE TABLE a; -- Error: cannot truncate "PUBLIC.A"; error code
[90106-137]

I believe the error is in RegularTable.java: method canTruncate()
doesn't check if referential integrity is disabled for that table or
the tables that reference it.

A fix is important to me, because I need to clear a set of big tables
quickly. DELETE FROM ... is too slow for this.

Thanks,
Dirk.

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to