PL/SQL Trigger: Facing bad bind variable error

The error indicates that there is no column "BLOODBANKID" in the table "BLOOD".

Either it doesn't exist at all in the table or you used double quotes on the column in your CREATE TABLE statement, thus making the column case sensitive.

If for instance your CREATE TABLE statement looks like this:

create table blood("bloodbankid" number(18), ...);

Then there is a column "bloodbankid" in the table, but no column "BLOODBANKID".

When we access a row without quotes as in

select BLOODBANKID from blood where BloodBankId = 123;

then Oracle converts this internally into "BLOODBANKID". As the same applies to CREATE TABLE, the column names usually match. If you used quotes in the CREATE TABLE statement, however, then you must use the same upper/lower case with quotes in every statement:

select "bloodbankid" from blood where "bloodbankid" = 123;

So, if this is the case, I'd recommend you re-create the table with case insensitive columns.

(Apart from this your trigger doesn't make sense anyway, as has already been mentioned in the request comments.)