考慮2個或多個表:PostgreSQL的從多個表
users (id, firstname, lastname)
orders (orderid, userid, orderdate, total)
我想刪除所有用戶和他們訂單匹配名字「薩姆」這一點。在MySQL中,我通常會左連接。在這個例子中,userid對我們來說是未知的。
查詢的正確格式是什麼?
考慮2個或多個表:PostgreSQL的從多個表
users (id, firstname, lastname)
orders (orderid, userid, orderdate, total)
我想刪除所有用戶和他們訂單匹配名字「薩姆」這一點。在MySQL中,我通常會左連接。在這個例子中,userid對我們來說是未知的。
查詢的正確格式是什麼?
http://www.postgresql.org/docs/current/static/sql-delete.html
DELETE
FROM orders o
USING users u
WHERE o.userid = u.id
and u.firstname = 'Sam';
DELETE
FROM users u
WHERE u.firstname = 'Sam';
你也可以創建ON delete cascade
http://www.postgresql.org/docs/current/static/ddl-constraints.html
CREATE TABLE order_items (
product_no integer REFERENCES products ON DELETE RESTRICT,
order_id integer REFERENCES orders ON DELETE CASCADE,
quantity integer,
PRIMARY KEY (product_no, order_id)
);
表定義userid
作爲一個外鍵users (id)
與級聯刪除,例如:
create table users (
id int primary key,
firstname text,
lastname text);
create table orders (
orderid int primary key,
userid int references users (id) on delete cascade,
orderdate date,
total numeric);
delete from users
where firstname = 'Sam';
非常感謝!這將對未來有所幫助 – fawzib