Sql 实现一个触发器来屏蔽列数据

Sql 实现一个触发器来屏蔽列数据,sql,oracle,triggers,Sql,Oracle,Triggers,我正在制定一项要求。 我必须应用触发器将数据屏蔽到数据库中的特定列。 该表有4列,firstName、lastName、userID和password。我想写一个触发器来屏蔽Passbrow列 这是触发器,但它没有按预期工作 创建或替换触发器dmm\u live.TRG\u I\u TUSER\u密码\u散列 在dmm_live.SampleHashPassword上插入或更新后 每行 声明 /*包装: *作者: *创建: *描述:触发器 * */ v型VARCHAR2(1); 开始 如果插入,

我正在制定一项要求。 我必须应用触发器将数据屏蔽到数据库中的特定列。 该表有4列,firstName、lastName、userID和password。我想写一个触发器来屏蔽Passbrow列

这是触发器,但它没有按预期工作

创建或替换触发器dmm\u live.TRG\u I\u TUSER\u密码\u散列
在dmm_live.SampleHashPassword上插入或更新后
每行
声明
/*包装:
*作者:
*创建:
*描述:触发器
*
*/
v型VARCHAR2(1);
开始
如果插入,则
vTYPE:=“I”;
然后更新
v类型:='U';
如果结束;
如果插入或更新,则
在dmm_live.SampleHashPassword(密码)值utl_i18n.STRING_TO_RAW(密码'AL32UTF8')中插入;
--将PASSWORD=utl_i18n.STRING_设置为_RAW(密码'AL32UTF8');
如果结束;
当其他人
无效的

有人可以帮忙吗?

在触发器中,您可以设置或更改更新表中某列的值-这是通过将该列作为绑定变量引用来完成的。基本上,这是在dml过程中调用的,因此您不会在表中进行插入(请记住,您是在实际的插入过程中)

我删除了未使用的代码行

一句话<代码>当其他代码为空时非常可怕。这意味着你不在乎是否出了什么问题。我希望看到错误,记录它,并可能显示在应用程序中的错误以及

CREATE OR REPLACE TRIGGER dmm_live.TRG_I_TUSER_PASSWORD_HASHING
AFTER INSERT OR UPDATE ON SampleHashPassword
FOR EACH ROW
DECLARE
/*  Package     :
 *  Author      :
 *  Created     :
 *  Description : Trigger
 *
 */
 vType VARCHAR2(1);
BEGIN
 :NEW.SampleHashPassword := utl_i18n.STRING_TO_RAW(password, 'AL32UTF8');
    --SET PASSWORD =utl_i18n.STRING_TO_RAW(PASSWORD, 'AL32UTF8');
EXCEPTION WHEN OTHERS THEN
  NULL;
END dmm_live.TRG_I_TUSER_PASSWORD_HASHING;