创建表查询错误

时间:2012-03-08 17:46:15

标签: c# database oracle

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();

此命令无效。请帮忙

3 个答案:

答案 0 :(得分:3)

需要使用constraint < constraint_name >明确指定约束,如下所示。

我稍微询问是否需要在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) )

答案 1 :(得分: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) )

删除时没有删除任何操作,因为它会导致错误,因为它是Oracle中的默认级联

答案 2 :(得分:0)

正如RaphaëlAlthaus指出的,有一个NO ACTION选项,实际上是默认选项,因此从表定义中省略ON DELETE将激活此行为。 Oracle中没有“ON DELETE NO ACTION”。 ON DELETE的选项是SET 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) 
)