sql >> Databasteknik >  >> RDS >> Oracle

Felmeddelande dålig bindningsvariabel i triggern

Utlösaren är definierad på ACCOUNT tabell. Du har lagt upp definitionen av CUSTOMER tabell. Om inte ACCOUNT tabellen har kolumner CustName och DOB , vilket verkar mycket osannolikt, kan du inte referera till :new.CustName eller :new.DOB -- :new posten är för raden som för närvarande infogas i ACCOUNT tabell.

Var tänker du få tag på CustName och DOB att infoga i Customer bord?

Om du tar ett steg tillbaka, varför är en trigger på Account tabell försöker infoga en rad i Customer bord i första hand. Det verkar vara en ovanligt dålig design. CustID i Account Tabellen skulle förmodligen vara en främmande nyckel som refererar till Customer tabell. Det skulle dock innebära att du bara kan infoga den överordnade raden i en utlösare om du deklarerar begränsningarna som uppskjutna och skjuter upp dem i början av varje transaktion. Utlösaren skulle i allmänhet inte ha något sätt att avgöra informationen för Customer kolumner som du vill fylla i vilket är källan till felet du får.




  1. Dela en partition i två i SQL Server (T-SQL)

  2. kolumner i oracle pivot

  3. hur man beräknar tiden mellan två tidsstämplar (PostgreSQL)

  4. NOLOCK vs. Transaktionsisoleringsnivå