Ошибка создания запроса таблицы - PullRequest
0 голосов
/ 08 марта 2012
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 ]

3 голосов
/ 08 марта 2012

Ограничение должно быть явно указано с помощью constraint < constraint_name >, как показано ниже.

Я немного сомневаюсь в необходимости создания таблицы в c #, если вы делаете это более одного раза. Почему его нет в базе данных?

on delete no action является значением по умолчанию и фактически не требует указания.

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 голосов
/ 08 марта 2012
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) )

Действие on delete no было удалено, так как это приведет к ошибке, так как это каскад по умолчанию в Oracle

0 голосов
/ 08 марта 2012

Как отметил Raphaël Althaus, есть опция 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) 
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...