Mysql create table with multiple foreign key on delete set null

后端 未结 4 1792
粉色の甜心
粉色の甜心 2021-01-12 05:59

I am trying to create a database with multiple foreign keys with delete/ update constraints, but I got a error code 1005 with following sql scripts:

CREATE T         


        
相关标签:
4条回答
  • 2021-01-12 06:17

    Visit :

    https://developer.android.com/training/basics/data-storage/databases.html#DefineContract

    Cursor c = db.query(
        FeedEntry.TABLE_NAME,                     // The table to query
        projection,                               // The columns to return
        selection,                                // The columns for the WHERE clause
        selectionArgs,                            // The values for the WHERE clause
        null,                                     // don't group the rows
        null,                                     // don't filter by row groups
        sortOrder                                 // The sort order
        );
    
    0 讨论(0)
  • 2021-01-12 06:17

    Visit :

    http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

    CREATE TABLE `ffxi_characterJob` (
    `serverID` int(11) NOT NULL,
    `userid` int(10)unsigned NOT NULL,
    `characterName` varchar(255) NOT NULL,
    `jobAbbr` char(4) NOT NULL,
    `jobLevel` int(11) default '0',
    PRIMARY KEY (`serverID`,`userid`,`characterName`,`jobAbbr`),
    INDEX (`jobAbbr`),
    CONSTRAINT FOREIGN KEY (`serverID`,`userid`,`characterName`) REFERENCES `ffxi_characters` (`serverID`,`userid`,`characterName`) 
    ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT FOREIGN KEY (`jobAbbr`) REFERENCES `ffxi_jobType` (`jobAbbr`) ON DELETE CASCADE ON UPDATE CASCADE
    ) TYPE=InnoDB;
    
    0 讨论(0)
  • 2021-01-12 06:18

    Try with create table(innoDB enginer) without foreign key and use the update table with constraint syntax, for example:

    ALTER TABLE `vineyard`
            ADD CONSTRAINT `relation_farmer_has_many_vineyards`
                FOREIGN KEY (`farmer_id`)
                REFERENCES `worker` (`worker_id`)
                ON DELETE SET NULL
                ON UPDATE CASCADE;
    

    Reference:

    • http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html

    Trick: is not recommended to use capital letters(or camel case) in the names of the tables that the behavior differs from the operating system being used:

    • http://dev.mysql.com/doc/refman/5.1/en/identifier-case-sensitivity.html
    0 讨论(0)
  • 2021-01-12 06:24

    Your foreign key rule is ON DELETE SET NULL but your column definition is NOT NULL.

    Either change your column definition and remove the NOT NULL part or overthink your foreign key rule. That works:

    CREATE TABLE Vineyard (
        VineyardID smallint auto_increment,
        VineyardName VARCHAR(45) NOT NULL,
        FarmerID    smallint,
        GrapeID smallint,
        ComeFrom    varchar(45) NOT NULL,
        HarvestedAmount int,
        RipenessPercent int,
        PRIMARY KEY (VineyardID),
        FOREIGN KEY (FarmerID) REFERENCES Worker(WorkerID)
            ON DELETE SET NULL
            ON UPDATE CASCADE,
        FOREIGN KEY (GrapeID) REFERENCES Grape(GrapeID)
            ON DELETE SET NULL
            ON UPDATE CASCADE
    )Engine=InnoDB;
    

    SQLFiddle demo

    0 讨论(0)
提交回复
热议问题