将数组插入到PostgreSQL

3

我想将一组id插入到文件中,但在创建表时我使用了int,它现在具有另一个表的引用,那么如何将数组值存储到特定字段中呢? 我知道列必须是相同类型的,我也看到一些人已经尝试解决这个关于数组的外键问题: 还尝试了根据https://blog.2ndquadrant.com/postgresql-9-3-development-array-element-foreign-keys/文档使用ELEMENT,但没有成功。请有经验的人在这里帮助我。

db.query('CREATE TABLE IF NOT EXISTS departments_users(_id SERIAL NOT NULL UNIQUE PRIMARY KEY,user_id int REFERENCES companyUser ON DELETE CASCADE,department_id int REFERENCES departments ON DELETE CASCADE)');

exports.addCompanyUser = function(data, callback) {
    db.query('INSERT INTO departments_users(user_id,department_id) VALUES($1,$2) RETURNING *', [companyuseraccess.rows[0]._id, data.department]).then(function(departments_users) {      
    })
}

http://stackoverflow.com/q/43776122/5315974 - Vao Tsun
1个回答

6

您没有任何数据类型为ARRAY的字段,因此您无法将数组插入该字段。如果您希望在字段中放入数组,请先将其数据类型更改为ARRAY,然后再进行操作。

INSERT INTO "some_table" ("id","array_field","some_text_field") 
VALUES (1,ARRAY['value1','value2']::TEXT[],'active') RETURNING *

希望这可以帮到您。如果需要进一步帮助,请告诉我。

1
但是,@hannan,我们已经创建了5个相互引用的表,我只需要将多个ID存储到部门中,所以您有关于数组字段的外键约束的任何想法吗? - Schüler
我觉得你所说的“ELEMENT REFERENCES”在Postgres中还不存在。我试过使用“ELEMENT REFERENCES”创建表,但没有成功。 - Hannan
针对您的答案,我得到了以下错误信息: { "name": "error", "length": 144, "severity": "ERROR", "code": "42P08", "detail": "文本与整数不匹配", "position": "61", "file": "parse_param.c", "line": "221", "routine": "variable_coerce_param_hook" } - Schüler
1
我只是举例写了 ::TEXT[]。你需要为该列放置相应的数据类型,即你的数组包含哪种类型的数据。例如,如果它包含UUID数组,则应为 ::UUID[] - Hannan
抱歉,我的错。尽管它说“您需要重写或转换表达式”,但我将其更改为整数类型了。 :难过: - Schüler
执行 ::UUID[] 是类型转换。你只需要将其转换为正确的数据类型即可。 - Hannan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接