【问题标题】:Adding on update/on delete option to already existing column将更新/删除选项添加到现有列
【发布时间】:2013-07-24 11:26:50
【问题描述】:

我被 MySQL 查询卡住了。我的数据库中有 2 个表: 1 台设备 2个任务

它们是 1 对 1 的关系。我在任务表中有列“device_id”,在设备表中有“task_id”列。当我删除具有给定 id_task 的设备行时,我想删除整个任务的行。 此外,一旦我删除具有给定 id_device 的任务行,我想将 id_task 设置为 null。我很确定 ALTER TABLE ALTER COLUMN statemets 有可能,但我得到 #1064 - 你的 SQL 语法错误已经有 30 分钟了。 有什么建议么? 顺便说一句,我有一些 phpmyadmin 但找不到这些选项,可能无法从 ui 获得。

【问题讨论】:

    标签: mysql phpmyadmin


    【解决方案1】:

    您可以使用外键(假设您使用的是 innodb):

    ALTER TABLE device
        ADD FOREIGN KEY
        (task_id)
        REFERENCES task (task_id)
        ON DELETE SET NULL
    
    ALTER TABLE task
        ADD FOREIGN KEY
        (device_id)
        REFERENCES device (device_id)
        ON DELETE CASCADE
    

    详细说明请看这里:

    http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

    【讨论】:

    • 是的,但我已经设置了 ForeignKeys + 我的数据库有点满了。所以我只想将选项从当前更改为上面提到的。不想创建新列
    • 您不能修改外键约束 - 您必须删除它并重新添加它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2014-09-30
    • 1970-01-01
    相关资源
    最近更新 更多