0

人々、

OracleトリガーをSQLサーバーに移行する必要がありますが、移行できませんでした。

Oracleのトリガーは非常に単純です。

CREATE OR REPLACE TRIGGER trigger_teste      
BEFORE INSERT OR UPDATE  
ON teste  
FOR EACH ROW  
DECLARE  
BEGIN  
:new.id      := (coalesce(:NEW.id,      0));  
:new.vlr_sal := (coalesce(:NEW.vlr_sal, 0.00));  
END;

私はいくつかの方法を試しましたが、どれも成功しませんでした!

助けてくれてありがとう!

4

2 に答える 2

1

これは、どの種類の RDBMS でもトリガーを適切に使用するものではありません。SQL 標準では、DEFAULT 制約構文を使用してテーブルを作成するときに、デフォルト値を定義できます。Oracle と SQL Server の両方にこれがあります。

明らかに、テーブルを作成したときにこれを行っていません。良いニュースは、ALTER TABLE を使用してデフォルトの制約を追加できることです。このようなもの

alter table teste 
   alter column id set default 0

これは SQL Server の場合です。Oracle では次のようになります。

alter table teste 
   modify id default 0 

名前のない馬が指摘するように、トリガーを完全に置き換えるには、影響を受ける列に NOT NULL 制約を含める必要があります。既存のテーブルに null でない制約がない場合は、上記と同じ構文を使用してそれらを追加し、DEFAULT 句をNOT NULL- に置き換えるか、同じステートメントで 2 つの句を組み合わせることもできます。

于 2012-07-07T08:27:18.600 に答える