こんにちは私はpostgres SQL用の関数を作成するのに問題があります。postgresSQL関数で複数の更新コマンドを実行する際の問題
説明すると、person_detailsテーブルの主キーはidだけで、person_idは同じperson_detailsテーブル内の別のフィールドです。
EXECUTE delete_accounts(('[email protected]','[email protected]'),(1231342321,1224235343))
:それはDISTINCTが何のためにあるのかであるので
アイデアは、関数を呼び出すと、検索されているいくつかの電子メールやIDS(複数の電子メールやID番号など)としてそれを使用するのと同じアカウントからのものです
以下のエラーを配っている:
ERROR:構文エラーまたはその付近「ユーザー」 SQL状態:42601 文字:840
を私はテーブルのユーザーを呼び出す周りのいくつかの問題があると知っていますデータベースがUPDATE 'user'は同じエラーを返します - これは私の問題だとは思わない。この中に他のエラーがあれば謝罪は - 私は、MySQLに使用していますし、それが助け場合は、これはPostgresのSQL
を使用して、最初の時間です - 私はpgadmin3でこれを使用しています
CREATE OR REPLACE FUNCTION delete_accounts(emailList TEXT, personID BIGINT)
RETURNS INTEGER AS $$
DECLARE
personDetailsID BIGINT;
userIDlist BIGINT;
appID TEXT;
BEGIN
--find all person_details ids using the person_id or email given
personDetailsID = (SELECT DISTINCT id FROM person_details WHERE email IN $1 OR person_id IN $2);
--set the register_status in the people found in personDetailsID to closed
UPDATE person_details AS p
SET p.onboarding_status = 'CLOSED'
WHERE p.id IN personDetailsID;
--Each person set up can have multiple users - find the user ids using the user_person_details linking table
userIDlist = (SELECT upd.user_id FROM user_person_details AS upd WHERE upd.person_details_id IN personDetailsID);
--update the enabled field for the user to 'f'
UPDATE user as u
SET u.enabled = 'f'
WHERE u.id in userIDlist;
$$ LANGUAGE plpgsql;