首页 > 解决方案 > 删除带有外键的行时如何在数据库中保留一个条目

问题描述

我的数据库设置如下:

CREATE TABLE farms
(
  id SERIAL8 primary key,
  name VARCHAR(255) not null,
  address VARCHAR(255),
  phone_num VARCHAR(255)
);

CREATE TABLE products
(
  id SERIAL8 primary key,
  name VARCHAR(255) not null,
  description VARCHAR(255),
  stock FLOAT,
  cost FLOAT,
  price FLOAT,
  farm_id INT8 references farms(id)
)

我遇到的问题是,当我删除农场时,它也会删除该农场中可用的所有产品,但我只想删除农场,而不是产品。

这是我删除农场的方法

  def delete
    sql = "DELETE FROM farms WHERE id = $1"
    values = [@id]
    SqlRunner.run(sql, values)
  end

是我如何构建表的问题,还是我的 SQL 语句不正确?

标签: sqlruby

解决方案


推荐阅读