2016-06-19 4 views
2

Я пытаюсь создать эту деятельность таблицу:SQL Server Ошибки создания таблицы - может вызвать циклы или несколько путей каскадных

CREATE TABLE activity 
(
    activity_id int, 
    description varchar(300), 
    start_date date, 
    due_date date, 
    plannes_price float, 
    hours_worked int, 
    billing_rate float, 
    actual_price float, 
    status varchar(50), 
    employee_id int, 
    date_completed date, 
    service_id int, 

    CONSTRAINT pk_activityId PRIMARY KEY (activity_id), 
    CONSTRAINT fk_act_emp_id FOREIGN KEY (employee_id) 
     REFERENCES employee(employee_id) 
     ON UPDATE CASCADE ON DELETE SET NULL, 
    CONSTRAINT fk_act_ser_id FOREIGN KEY (service_id) 
     REFERENCES service(service_id) 
     ON UPDATE CASCADE ON DELETE NO ACTION 
) 

, но я получаю эту ошибку:

Msg 1785, Level 16, State 0, Line 114
Introducing FOREIGN KEY constraint 'fk_act_ser_id' on table 'activity' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.

Msg 1750, Level 16, State 0, Line 114
Could not create constraint or index. See previous errors.

Если установить fk_act_ser_id ограничения UPDATE NO ACTION, тогда код будет работать без ошибок. Но я хочу установить это UPDATE CASCADE.

Кто-нибудь знает, как это исправить?

+0

Нам также нужно будет увидеть DDL таблицы обслуживания. –

+1

* Боковое примечание: * пожалуйста, сделайте ** НЕ ** используйте 'float' (а не' real' или 'double') для информации о цене или скорости - эти типы * заведомо * неточны и склонны стать жертвами ошибок округления. Используйте 'decimal (p, s)' for ** all ** money-related values! –

+0

oh ok .. спасибо :) – imanshu15

ответ

2

Это все о таблицах, которые здесь не показаны. Существует несколько способов удалить activity - и один из этих способов имеет два пути до activity. Например, если service может привести к удалению employee (или удаление employee может удалить service) ... или какой-либо другой путь удаления. У вас может быть только один путь удаления/обновления в любую таблицу из данной начальной таблицы.

+0

о, да, получил это сейчас .. спасибо – imanshu15

Смежные вопросы