What's the difference between NO ACTION and RESTRICT?
With Firebird, there is no difference.
Some other SQL systems make a following distinction: NO ACTION means to allow the change if the new value in the child table is still valid after statement and all the triggers are completed (i.e. still found in the parent table of the relationship), while RESTRICT means that changing the value is not allowed at all (no change or delete is allowed if there are child records).
This is implemented in such way that NO ACTION constraint rules are checked after all other operation, and RESTRICT is checked before any other operation. In current Firebird versions, both keywords are implemented as NO ACTION.
Please note that RESTRICT rule is applied when option is not give in the constraint. That is, if you run:
ALTER TABLE EMPLOYEE ADD CONSTRAINT INTEG_28
FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT (DEPT_NO);
Since ON UPDATE and ON DELETE clauses are not given, it means ON UPDATE RESTRICT and ON DELETE RESTRICT.