Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I'm assuming that you're trying to create the following schema:</p> <pre><code>CREATE TABLE company ( companyId int PRIMARY KEY) CREATE TABLE division ( divisionId int PRIMARY KEY, companyId int REFERENCES company (companyId) ON DELETE CASCADE ON UPDATE CASCADE) CREATE TABLE resource ( resourceId int PRIMARY KEY, companyId int REFERENCES company (companyId) ON DELETE CASCADE ON UPDATE CASCADE) CREATE TABLE divisionResource ( divisionId int REFERENCES division (divisionId) ON DELETE CASCADE ON UPDATE CASCADE, resourceId int REFERENCES resource (resourceId) ON DELETE CASCADE ON UPDATE CASCADE, PRIMARY KEY (divisionId, resourceId)) </code></pre> <p>Which throws:</p> <pre>Introducing FOREIGN KEY constraint on table 'divisionResource' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.</pre> <p>Changing either <code>divisionId</code> or <code>resourceId</code> to <code>ON DELETE NO ACTION ON UPDATE NO ACTION</code> will essentially break the referential integrity. What I suggested in my comment was to make a surrogate key. However, it would be better if you created a separate table for <code>resource</code>. This will maintain the referential integrity and also normalize the schema:</p> <pre><code>CREATE TABLE company ( companyId int PRIMARY KEY) CREATE TABLE division ( divisionId int PRIMARY KEY, companyId int REFERENCES company (companyId) ON DELETE CASCADE ON UPDATE CASCADE) CREATE TABLE resource ( resourceId int PRIMARY KEY) CREATE TABLE companyResource ( resourceId int REFERENCES resource (resourceId) ON DELETE CASCADE ON UPDATE CASCADE, companyId int REFERENCES company (companyId) ON DELETE CASCADE ON UPDATE CASCADE) CREATE TABLE divisionResource ( divisionId int REFERENCES division (divisionId) ON DELETE CASCADE ON UPDATE CASCADE, resourceId int REFERENCES resource (resourceId) ON DELETE CASCADE ON UPDATE CASCADE, PRIMARY KEY (divisionId, resourceId)) </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload