Синтаксис отключает триггеры в Oracle:
SQL> select trigger_name, status from user_triggers
2 where table_name='TEST'
3 /
TRIGGER_NAME STATUS
------------------------------ --------
TEST_TRIGGER ENABLED
SQL> ALTER TABLE test DISABLE ALL TRIGGERS
2 /
Table altered.
SQL> select trigger_name, status from user_triggers
2 where table_name='TEST'
3 /
TRIGGER_NAME STATUS
------------------------------ --------
TEST_TRIGGER DISABLED
SQL>
Однако это ничего не даст для внешних ключей или для каких-либо других ограничений. Это связано с тем, что Oracle не использует триггеры для принудительного применения таких вещей. Хорошо, в рамках ограничений оболочки и пользовательских триггеров может использоваться определенный низкоуровневый код ядра. Но на том уровне, о котором мы говорим, это две разные вещи.
Если вы хотите отключить все внешние ключи на столе, боюсь, вам нужно использовать что-то вроде этого:
SQL> select constraint_name, status from user_constraints
2 where table_name = 'EMP'
3 and constraint_type = 'R'
4 /
CONSTRAINT_NAME STATUS
------------------------------ --------
FK_DEPTNO ENABLED
SQL> begin
2 for r in ( select constraint_name, status from user_constraints
3 where table_name = 'EMP'
4 and constraint_type = 'R' )
5 loop
6 execute immediate 'alter table emp disable constraint '||r.constraint_name;
7 end loop;
8* end;
9 /
PL/SQL procedure successfully completed.
SQL> select constraint_name, status from user_constraints
2 where table_name = 'EMP'
3 and constraint_type = 'R'
4 /
CONSTRAINT_NAME STATUS
------------------------------ --------
FK_DEPTNO DISABLED
SQL>
Это та вещь, которую вы, вероятно, захотите обернуть в пользовательскую функцию, которая принимает TABLE_NAME в качестве параметра. Также вам понадобится аналогичная функция для повторного включения ограничений.