Lel,
Your "IF" statement ["IF NVL

old.student_id, 'NULL')..."] is actually a very clever way to determine if "

ld.student_id" is different from ":new.student_id", but your DECODE statement makes me believe that you misunderstand the nature and use of NULL.
Your DECODE statement as it is coded presently is not checking if :new.student_id is NULL; it is checking to see if it contains the four characters "N-U-L-L"; and if it does contain those four characters, the DECODE inserts the zero-length absence of value, '', which is identical to the zero-length absence of value, NULL.
I cannot see any evidence that :new.student_id ever contains the four-character string "N-U-L-L", nor does your code do what you specified in your original thread specification, "... I would like for the value inserted into the table to be blank and not the value 'NULL'..." Your code is inserting a zero-length absence of value. And lastly, I don't believe what you really want in your data is a "blank space", either. In the Oracle world, use of a "blank space character" (a one-byte ASCII value 32) to represent the absence of value is a "No-no".
So, even though your use of DECODE is syntactically okay, I believe you don't want or need the DECODE. You will be fine (in Oracle terms) to just say,
"...UPDATE test.test_student
SET student_id = :new.student_id
WHERE student_num =

ld.student_num;"
I'm guessing that you will have a response to my assertions above.
Cheers,
Dave
Sandy, Utah, USA @ 00:09 GMT, 17:09 Mountain Time