我要在tableA上写一个插入触发器。它将使用相同的表但不同的列执行更新。执行此操作时出现错误。我的触发器是
create or replace trigger trigger_A
after insert on table_A
begin
update table_A set col1=1 where col1 is null;
end;
我有一个应用程序将单独执行col2并将col1保持为空。因此,一旦插入行,我的触发器将为col1提供值。但是插入行时出现错误消息,提示“触发器失败且无效”。这该怎么做。TIA。
如果要分配一个简单的默认值,最简单的方法是使用DEFAULT子句在表上声明它。
SQL> create table t42
2 ( col1 number default 1 not null
3 , col2 date)
4 /
Table created.
SQL> insert into t42 (col2) values (sysdate)
2 /
1 row created.
SQL> select * from t42
2 /
COL1 COL2
---------- ---------
1 03-AUG-11
SQL>
这适用于文字或伪列,例如SYSDATE或USER。如果要使用用户定义的函数或序列派生更复杂的值,则需要使用触发器。
这是表格的新版本…
SQL> create table t42
2 ( col1 number default 1 not null
3 , col2 date default sysdate
4 , col3 varchar2(30) default user
5 , col4 number )
6 /
Table created.
SQL>
…带有触发器:
SQL> create or replace trigger t42_trg
2 before insert or update
3 on t42
4 for each row
5 begin
6 if :new.col4 is null
7 then
8 :new.col4 := my_seq.nextval;
9 end if;
10 end;
11 /
Trigger created.
SQL> insert into t42 (col1, col2, col3)
2 values (99, sysdate, 'MR KNOX')
3 /
1 row created.
SQL> select * from t42
2 /
COL1 COL2 COL3 COL4
---------- --------- ------------------------------ ----------
99 03-AUG-11 MR KNOX 161
SQL>
请注意,尽管表上的每一列都是默认列,但我必须填充至少一列以使SQL有效:
SQL> insert into t42 values ()
2 /
insert into t42 values ()
*
ERROR at line 1:
ORA-00936: missing expression
SQL>
但是我可以将NULL传递给COL4以获得完全默认的记录:
SQL> insert into t42 (col4) values (null)
2 /
1 row created.
SQL> select * from t42
2 /
COL1 COL2 COL3 COL4
---------- --------- ------------------------------ ----------
99 03-AUG-11 MR KNOX 161
1 03-AUG-11 APC 162
SQL>
警告:我的触发器使用了新的11g语法。在以前的版本中,我们必须使用SELECT语句分配序列值:
select my_seq.nextval
into :new.col4
from dual;
问题内容: 这是我想做的事情: 当表中有新记录时,我需要通过设置以表示特定(旧)帐户已被编辑来更新where =中的行。 要求 不是 我要操纵 新插入的 列,而是要使用一个 已经存在的 列 但是,我无法更新同一张表: 请提出解决方法 PS:我已经走过了更新表触发器在同一个表更新后,插入到相同的表触发的mysql,更新与后同桌INSERT触发器和表后插入MySQL的触发器与插入和更新,但他们似乎没有
以下是我想做的: 当表中有新的 时,我需要通过设置 ' 来更新中的行 = ,以表示特定(旧)帐户已被编辑。 要求不是操作新插入的列,而是使用< code>pk = NEW.edit_on操作已经存在的列 但是,我无法更新同一个表: 请建议一个解决方法 PS:我已经完成了更新同一表后在触发器中更新表、插入到同一表中触发器mysql、在同一表上用插入后触发器更新以及在表上用Insert和update在
我正在尝试创建一个触发器,该触发器将在更新另一个表之后更新一个表。我需要它,这样如果数字列中的一个数字被更新,那么这需要记录在另一个表中。这就是我到目前为止所拥有的。。 测试更新到表: 如您所见,我正在尝试将新插入的用户编号存储到一个变量中,然后该变量将用于填充user_changes表的insertednumber列。任何帮助都将不胜感激,谢谢!
问题内容: 在同一张表上更新后,如何在触发器中更新表的列? 这是触发条件: 现在当我像这样更新表时 这不起作用,因为我得到以下信息: 那么我到底该如何工作呢? 问题答案: 如果将触发器更改为而不是,可以这样操作:
问题内容: 我正在尝试编写触发器,我有下表:BookingRequest: 状态表: 被占领的房间: 我需要一个触发器,如果将具有相同ID的请求插入到OccupiedRoom表中,它将把BookingReques中的状态更改为1,所以我尝试了类似的操作 而且它不起作用,所以任何建议都非常有用 问题答案: 尝试这个:
问题内容: 我目前正在创建某种库存系统。 我在哪里保存项目。在中,我有一栏或剩余的可用库存。 tbl1: 我还有一个表,我将所有交易保存在该表中。在这张桌子上有。 tbl2 我的问题是如何在UPDATE的同时插入一行。 例如:当我在request_by,product和qty_issued中插入记录时,我希望可以自动更新。因为我们向John发出了2(数量)的鼠标。tbl1中的鼠标记录应自动减少到“