Use of WITH CHECK OPTION

When creating a view, you can use the SQL standard clause WITH CHECK OPTION [ CASCADE ]. If a view has been created with this option, the data updates that are inconsistent with the definition of the view will be rejected. For example, if the incidents_acme view is defined using the following statement:

CREATE VIEW incidents_acme AS
   SELECT * FROM Internet_inc WHERE taxid = 'B78596011'
WITH CHECK OPTION

The following INSERT statement will fail:

INSERT INTO incidents_acme (
iinc_id
, summary
, ttime
, taxid
, specific_field1
, specific_field2)
VALUES (
6
, 'Error in ADSL Router'
, '31-mar-2005 22h 35m 24s'
, 'B78596015'
, '5'
, '6')

This statement fails because the value of the taxid field does not meet the WHERE condition of the incidents_acme view.

If the view is created with the WITH CHECK OPTION CASCADE clause, the Server checks that the inserted values meet the WHERE condition of the view and also, the WHERE conditions of the subviews.

If the “Automatic simplification of queries” is enabled, when executing an INSERT/UPDATE/DELETE query over a derived view, the Server assumes that this view was created with the option WITH CHECK OPTION. As a result, the Server checks that the data inserted/updated/deleted meets the WHERE condition of the definition of the view.