Sql &引用;此行没有唯一标识符。”;在Postgres中尝试删除行时

Sql &引用;此行没有唯一标识符。”;在Postgres中尝试删除行时,sql,postgresql,Sql,Postgresql,我有一个简单的表,它有以下方案: CREATE TABLE dateien( id int PRIMARY KEY UNIQUE DEFAULT NEXTVAL('dateien_id_seq'), name varchar(64), zeit timestamp DEFAULT now(), groesse float, dateityp_id int references dateitypen(id), benutzer_id int refe

我有一个简单的表,它有以下方案:

CREATE TABLE dateien(
    id int PRIMARY KEY UNIQUE DEFAULT NEXTVAL('dateien_id_seq'),
    name varchar(64),
    zeit timestamp DEFAULT now(),
    groesse float,
    dateityp_id int references dateitypen(id),
    benutzer_id int references benutzer(id)
);
当尝试通过phppgadmin删除行时,我始终会收到以下消息:
此行没有唯一标识符。

此外,通过纯sql,delete语句之后没有任何效果。
您能告诉我问题出在哪里吗?

我看不出引用的表是如何创建的。

dateityp_id int references dateitypen(id),
benutzer_id int references benutzer(id)
因此,我只能猜测…,作为一个例子。表产品、订单、日期

如果在创建引用产品的订单后删除了产品,该怎么办?SQL也允许您指定它。直观地说,我们有几个选择:

  • 不允许删除引用的产品
  • 同时删除订单
  • 还有别的吗
当有人想要删除仍被订单引用的产品(通过dateien)时,我们不允许它。如果有人删除订单,dateien也会被删除

product_no integer REFERENCES products ON DELETE RESTRICT,
order_id integer REFERENCES orders ON DELETE CASCADE,
限制和级联删除是两种最常见的选项。限制也可以写为无操作,如果不指定任何内容,它也是默认设置。对于删除主键时外键列的情况,还有两个其他选项:SET NULL和SET DEFAULT。请注意,这些并不能免除您遵守任何约束的责任。例如,如果某个操作指定SET DEFAULT,但默认值不满足外键,则删除主键将失败


更多信息:

我看不到引用表是如何创建的。

dateityp_id int references dateitypen(id),
benutzer_id int references benutzer(id)
因此,我只能猜测…,作为一个例子。表产品、订单、日期

如果在创建引用产品的订单后删除了产品,该怎么办?SQL也允许您指定它。直观地说,我们有几个选择:

  • 不允许删除引用的产品
  • 同时删除订单
  • 还有别的吗
当有人想要删除仍被订单引用的产品(通过dateien)时,我们不允许它。如果有人删除订单,dateien也会被删除

product_no integer REFERENCES products ON DELETE RESTRICT,
order_id integer REFERENCES orders ON DELETE CASCADE,
限制和级联删除是两种最常见的选项。限制也可以写为无操作,如果不指定任何内容,它也是默认设置。对于删除主键时外键列的情况,还有两个其他选项:SET NULL和SET DEFAULT。请注意,这些并不能免除您遵守任何约束的责任。例如,如果某个操作指定SET DEFAULT,但默认值不满足外键,则删除主键将失败


更多信息:

啊,该死的。。。我发现了错误。我忘了提到一个触发器,它在这张桌子上也是活动的。触发因素是:

CREATE TRIGGER update_quota BEFORE INSERT OR UPDATE OR DELETE
ON dateien
FOR EACH ROW
EXECUTE PROCEDURE f_update_quota();

但是当删除时,我返回了一些错误。这就是它不起作用的原因。

啊,该死的。。。我发现了错误。我忘了提到一个触发器,它在这张桌子上也是活动的。触发因素是:

CREATE TRIGGER update_quota BEFORE INSERT OR UPDATE OR DELETE
ON dateien
FOR EACH ROW
EXECUTE PROCEDURE f_update_quota();

但是当删除时,我返回了一些错误。这就是它不起作用的原因。

删除语句后“无效果”的确切含义是什么?是否有错误?是否提交了删除?哪里有“无效果”“。当我输入时:
delete from dateien,其中id=1我只是得到
没有找到行。
并且有一行具有此ID。您有可能在不同的模式中有多个同名的表?不,数据库中只有一个模式“delete语句后没有效果?您有错误吗?您提交了delete吗?这是什么意思?”无效“。当我输入时:
delete from dateien,其中id=1我只是发现
没有找到行。
有一行具有此ID。您有可能在不同的模式中有多个同名表?不,数据库中只有一个模式这不是问题所在。正如我在回答中所描述的那样,我忘记了要提及的事情。不过还是要谢谢你!这不是问题所在。正如我在回答中所描述的那样,我忘记了要提及的事情。不过还是要谢谢你!