加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Sql 用触发器改变表?

发布时间:2022-12-03 08:02:32 所属栏目:MsSql教程 来源:转载
导读: Sql 用触发器改变表?
sqloracleplsqltriggers
Sql 用触发器改变表?,sql,oracle,plsql,triggers,Sql,Oracle,Plsql,Triggers,我正在表上使用BEFORE INSERT或UPDATE触发器,并希望在触发器中

Sql 用触发器改变表?

sqloracleplsqltriggers

Sql 用触发器改变表?,sql,oracle,plsql,triggers,Sql,Oracle,Plsql,Triggers,我正在表上使用BEFORE INSERT或UPDATE触发器,并希望在触发器中查询同一个表。触发器适用于每一行编译后,触发器成功编译,没有错误和警告,并且处于有效状态。但是触发器不会执行我查询这个表的地方和之后的代码代码所做的只是检查客户是否已经使用了Attribute1中存储的DebitNote。如果已经使用,则抛出错误,否则继续我不能这样做。是不是表出错了?如果有任何帮助,我们将不胜感激CREATE OR REPLACE TRIGGER APPS_APPL.XX_OZF_DBTN

我正在表上使用BEFORE INSERT或UPDATE触发器,并希望在触发器中查询同一个表。触发器适用于每一行

编译后,触发器成功编译,没有错误和警告,并且处于有效状态。但是触发器不会执行我查询这个表的地方和之后的代码

代码所做的只是检查客户是否已经使用了Attribute1中存储的DebitNote。如果已经使用,则抛出错误,否则继续

我不能这样做。是不是表出错了?如果有任何帮助,我们将不胜感激

CREATE OR REPLACE TRIGGER APPS_APPL.XX_OZF_DBTNUM_INS_TRG
BEFORE INSERT OR UPDATE
   ON OZF_CLAIM_LINES_ALL
   FOR EACH ROW
   WHEN (NEW.org_id = 43)
DECLARE
   ln_cust_account_id    NUMBER;
   ln_debit_cust_count   NUMBER;
   le_claim_invalid      EXCEPTION;

   lv_attribute1         VARCHAR2 (100);
BEGIN
   --Get Customer account Id for this new ClaimID
   SELECT cust_account_id
     INTO ln_cust_account_id
     FROM ozf_claims_all
    WHERE claim_id = :NEW.CLAIM_ID;
   --Get Count of Records That this customer has same debitNote#
   SELECT COUNT (ocla.claim_line_id)
INTO ln_debit_cust_count
  FROM ozf_claims_all oca, ozf_claim_lines_all ocla
 WHERE     oca.claim_id = ocla.claim_id
       AND oca.cust_account_id = ln_cust_account_id
       AND ocla.debitnum = :NEW.debit_number;   
   --If count is more then 0 then throw error else proceed
   IF ln_debit_cust_count > 0

jk触发分相器_Mssq触发器_电表倒转器操作说明书民用电表调表器倒表器

THEN RAISE le_claim_invalid; END IF; EXCEPTION WHEN le_claim_invalid THEN fnd_message.set_name ('OZF', 'XX_OZF_DEBITNUM_VALIDATION'); fnd_msg_pub.ADD; RAISE fnd_api.g_exc_error; END; /

我想你应该确保同一个索赔ID和借方编号的OZF索赔行中没有多行

如果这是真的,那么您可以在表OZF_CLAIM_line_ALL和列CLAIM_ID和DEBITNUM上添加一个唯一的键约束

ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);

如果这不是一个选项,并且唯一的选项是使用触发器,那么您可以使用类似于现有的行触发器来解决它,而不是从同一个表中选择,您可以将其添加到临时表中。然后使用语句触发器从临时表和要更新的表中进行选择。如果计数>0,则可以在此处引发错误

避免在他人为空时使用;然后您将看到错误。当其他人看到NULL时,它本身就是一个bug。谢谢,我将删除这部分代码。但是仍然需要您的帮助来解决此错误。请删除它,编译它并发布完整的错误堆栈。编译时错误不同于运行时错误。@Moudiz-这是一件非常有名的事情Mssq触发器,DBA的问题似乎很好地涵盖了这一点。突变表错误是关于看到一组不一致的数据。通过单行插入,您可以了解状态。对于多行,从每行的角度来看,状态是不确定的,因为您不知道在该点上已经“存在”了哪些其他行。

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!