更新连接表

时间:2017-09-02 12:15:10

标签: node.js postgresql architecture knex.js

我有两个表futures = [asyncio.ensure_future(t, loop=loop) for t in window_tasks] gathered = asyncio.gather(*futures, loop=loop, return_exceptions=True) loop.run_until_complete(gathered) for fut in futures: try: yield fut.result() except Exception as e: yield repr(e) product,其中包含联结表tag。产品可以有许多不同的标签,标签可以有许多不同的产品,但是一个产品和一个标签之间的关系必须是唯一的。

products_tags

我目前正在计划通过前端层更新每次由Product对象发送CREATE TABLE product ( id serial PRIMARY KEY NOT NULL, name varchar(255) NOT NULL ) CREATE TABLE tag ( id serial PRIMARY KEY NOT NULL, name varchar(255) NOT NULL ) CREATE TABLE products_tags ( product_id integer NOT NULL REFERENCES product(id), tag_id integer NOT NULL REFERENCES tag(id), PRIMARY KEY(product_id, tag_id) ) 数组来更新联结表,删除包含当前{tags的所有行1}}并为products_tags数组中的每个ID在product_id中创建一个新行。

我的问题是:有没有更有效的方法来实现这一目标?或者是删除并重新插入行是保证联结表中数据完整性的唯一理智方法吗?

1 个答案:

答案 0 :(得分:1)

对于任何可能正在努力解决这个问题的人来说,这就是我最终的目标。可能仍然可以优化,但绝对是一个比我最初的问题更好的解决方案。

{{1}}

向@wildplasser大肆指责我指向正确的方向!