2012-03-08 8 views
-2
command.CommandText = "CREATE TABLE daily_prostock (product_id varchar2(30),daily_prounit number(30) not null,day varchar2(30),FOREIGN KEY (product_id) REFERENCES product_description (product_id) ON DELETE NO ACTION )"; 
command.ExecuteNonQuery(); 

このコマンドは機能しません。助けてくださいテーブル作成クエリエラー

+5

はその固有のものではない、より多くの情報を提供してください – Ben

+0

[尋ねる]参照「機能していません」。どのOracleのバージョン。何が効いていないのですか?エラーはありますか?より完全な例を投稿してください。 – cadrell0

+0

私はこれらの推測ゲームが大好きです... –

答えて

3

制約は、以下のように明示的にconstraint <constraint_name>で指定する必要があります。

2回以上実行している場合は、C#でテーブルを作成する必要があります。なぜそれはまだデータベースにないのですか?

on delete no actiondefaultであり、実際には指定する必要はありません。

CREATE TABLE daily_prostock (
    product_id varchar2(30) 
    , daily_prounit number(30) not null 
    , day varchar2(30) 
    , constraint daily_prostock_fk 
     FOREIGN KEY (product_id) 
     REFERENCES product_description (product_id)) 
2
CREATE TABLE daily_prostock (
product_id varchar2(30), 
daily_prounit number(30) not null, 
day varchar2(30), 
constraint fkproduct 
FOREIGN KEY (product_id) REFERENCES product_description (product_id)) 

上のラファエルAlthausがある、NO ACTIONオプションがあり、指摘したように、それはOracleの

0

にデフォルトカスケードだとして、それは、エラーの原因になりますよう何のアクションが削除されていない削除実際にはデフォルトであるため、テーブル定義からON DELETEを省略すると、この動作が実行されます。 Oracleには、「アクションを削除しないでください」はありません。 ON DELETEのオプションは、NULL設定されているか CASCADE

CREATE TABLE daily_prostock (
    product_id varchar2(30), 
    daily_prounit number(30) not null, 
    day varchar2(30), 
    FOREIGN KEY (product_id) 
    REFERENCES product_description (product_id) 
) 
+0

間違っています。存在しますが(> 9i)、CREATE TABLEステートメントでは使用できません。 http://www.dba-oracle.com/bk_on_delete_restrict_on_delete_no_action_tips.htm –

+0

ありがとうございます。私は答えを修正します。 –