AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[upsert](dba)

Martin Hope
Fajela Tajkiya
Asked: 2022-09-04 00:36:22 +0800 CST

这三个版本的 TSQL 片段有什么区别?

  • 5

版本 1

DECLARE @key INTEGER = 33, @val INTEGER = 44;
BEGIN TRANSACTION;
INSERT dbo.t([key], val)
  SELECT @key, @val
  WHERE NOT EXISTS
  (
    SELECT 1 FROM dbo.t WITH (UPDLOCK, SERIALIZABLE)
      WHERE [key] = @key
  );
IF @@ROWCOUNT = 0
BEGIN
  UPDATE dbo.t SET val = @val WHERE [key] = @key;
END
COMMIT TRANSACTION;

版本 2

DECLARE @key INTEGER = 33, @val INTEGER = 44;
BEGIN TRANSACTION;
INSERT dbo.t WITH (UPDLOCK, SERIALIZABLE) ([key], val)
  SELECT @key, @val
  WHERE NOT EXISTS
  (
    SELECT 1 FROM dbo.t
      WHERE [key] = @key
  );
IF @@ROWCOUNT = 0
BEGIN
  UPDATE dbo.t SET val = @val WHERE [key] = @key;
END
COMMIT TRANSACTION;

版本 3

DECLARE @key INTEGER = 33, @val INTEGER = 44;
BEGIN TRANSACTION;
INSERT dbo.t WITH (UPDLOCK, SERIALIZABLE) ([key], val)
  SELECT @key, @val
  WHERE NOT EXISTS
  (
    SELECT 1 FROM dbo.t WITH (UPDLOCK, SERIALIZABLE)
      WHERE [key] = @key
  );
IF @@ROWCOUNT = 0
BEGIN
  UPDATE dbo.t SET val = @val WHERE [key] = @key;
END
COMMIT TRANSACTION;

我对提示的位置感到困惑。如果INSERT部分中的表和子查询相同,那么在哪里写提示仍然有区别吗?

sql-server upsert
  • 1 个回答
  • 262 Views
Martin Hope
Thomas
Asked: 2022-08-07 08:17:23 +0800 CST

DELETE 加 INSERT,还是 UPSERT 行?

  • 0

我试图找出最快的方法:

  • 如果不存在则插入一行
  • 替换(一次所有列)该行(如果存在)

我考虑过DELETE+ INSERT,但这看起来像 2 次扫描,如果我执行INSERT+ ON CONFLICT,我会得到一个巨大的查询,其中所有内容都必须复制。

有没有公​​认的方法来做到这一点?

postgresql upsert
  • 1 个回答
  • 122 Views
Martin Hope
hap76
Asked: 2022-06-18 09:01:16 +0800 CST

寻找在 IF EXISTS 中作为子查询工作的 CTE 的替代品

  • 1

我有一个 IF EXISTS 'upsert' 在它自己的存储过程中运行良好。但是当我尝试使用引用 CTE 的相同语句时,它无法识别 CTE。我在相关帖子中看到我不允许使用 CTE 作为子查询。我很好奇为什么会这样,我还能如何做到这一点?

使用 IF EXISTS 的工作存储过程:

ALTER Procedure [dbo].[sproc_receive]
    @StockCode VARCHAR(50), 
    @Qty DECIMAL(18,6)
AS

--source: https://weblogs.sqlteam.com/dang/2007/10/28/conditional-insertupdate-race-condition/

SET NOCOUNT, XACT_ABORT ON

BEGIN TRAN

IF EXISTS(SELECT * FROM tblReceivedQty WITH (UPDLOCK, HOLDLOCK) WHERE StockCode = @StockCode)
    BEGIN
          UPDATE tblReceivedQty
          SET ReceivedQty = ReceivedQty + @Qty
          WHERE StockCode = @StockCode
    END
ELSE
    BEGIN
          INSERT INTO tblReceivedQty (StockCode, ReceivedQty)
          VALUES (@StockCode, @Qty)
    END
COMMIT

RETURN @@ERROR
GO

这是我尝试在另一个以 json 字符串作为输入的存储过程中重新调整 IF EXISTS 的用途。

USE [<databasename>]
GO

/****** Object:  StoredProcedure [dbo].[sproc_PutAway]    Script Date: 6/13/2022 4:14:02 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER Procedure [dbo].[sproc_PutAway]
(@json NVARCHAR(MAX) = '')
AS
BEGIN

-- Create CTE from JSON input
WITH json_received(StockCode, Qty)
AS
(
SELECT StockCode, Qty
    FROM OPENJSON(@json)
    WITH (
        StockCode VARCHAR(30) '$.StockCode',
        Qty DECIMAL(18,6) '$.Qty'
        )
)

SET NOCOUNT, XACT_ABORT ON

BEGIN TRAN

IF EXISTS(SELECT * FROM tblReceivedQty WITH (UPDLOCK, HOLDLOCK) WHERE tblReceivedQty.StockCode = json_received.StockCode)
    BEGIN
        UPDATE tblReceivedQty
        SET tblReceivedQty.ReceivedQty = tblReceivedQty.ReceivedQty - (
            SELECT Sum(Qty)
            FROM json_received
            WHERE tblReceivedQty.StockCode = json_received.StockCode
            GROUP BY json_received.StockCode
            )
    END
ELSE
    BEGIN
        INSERT INTO tblReceivedQty (StockCode, ReceivedQty)
        VALUES (json_received.StockCode, (-1 * json_received.Qty))
    END

COMMIT

RETURN @@ERROR
GO

这在 CTE 之后给了我一个语法错误,并且在对 CTE 的所有引用上都出现了“无法绑定多部分标识符”。

感谢任何提示!

cte upsert
  • 1 个回答
  • 60 Views
Martin Hope
medicengonzo
Asked: 2022-02-25 10:24:30 +0800 CST

UPSERT 上的 UPDATE 语句不增加值

  • 2

我有以下查询:

INSERT INTO ReservationCounter (student_id, reservation_count) VALUES (1, 1)
ON CONFLICT (student_id) DO
UPDATE SET reservation_count=excluded.reservation_count+1;

当没有冲突时它INSERTS成功。

但是,当发生冲突时,该UPDATE语句实际上并没有用增量更新值。

当我第一次在冲突中运行它时,它按预期返回 2,但是当我再次运行它时,我希望它从 2 增加到 3(因为reservation_count=excluded.reservation_count+1)。它不这样做,它再次返回 2;让我相信那reservation_count永远是1。

我究竟做错了什么?

postgresql upsert
  • 1 个回答
  • 678 Views
Martin Hope
Sam Whited
Asked: 2022-02-17 11:28:29 +0800 CST

来自冲突的选择中的 Sqlite upsert 并不总是更新行

  • 0

假设使用以下内容构建数据库:

PRAGMA foreign_keys = ON;

CREATE TABLE foo (
  id   INTEGER PRIMARY KEY NOT NULL,
  name TEXT NOT NULL,

  UNIQUE (name)
);
INSERT INTO foo (name) VALUES ('one'), ('two'), ('three');

CREATE TABLE bar (
   id    INTEGER PRIMARY KEY NOT NULL,
   key   TEXT    NOT NULL,
   fooID INTEGER NOT NULL,

   FOREIGN KEY (fooID) REFERENCES foo(id) ON DELETE CASCADE,
   UNIQUE (key)
);

如果我想将一个值插入到表中bar(这里由'key'字符串表示,但在现实世界中它将被参数化,这将是$1并且'三'将是$2)使用foo我尝试过的名称字段如下所示:

INSERT INTO bar (key, fooID)
  SELECT 'key', foo.id FROM foo WHERE foo.name='three'
  ON CONFLICT (key) DO UPDATE SET fooID=excluded.id;

但它有时似乎只更新现有行,例如。在上面的人为示例中,如果我从使用“三”foo.name变为“二”,它会更新得很好,但如果我再次使用“三”运行,它不会更新。

sqlite> delete from bar
sqlite> INSERT INTO bar (key, fooID) SELECT 'key', foo.id FROM foo WHERE foo.name='three' ON CONFLICT (bar.key) DO UPDATE SET fooID=excluded.id;
sqlite> select * from bar;
1|key|3
sqlite> INSERT INTO bar (key, fooID) SELECT 'key', foo.id FROM foo WHERE foo.name='two' ON CONFLICT (bar.key) DO UPDATE SET fooID=excluded.id;
sqlite> select * from bar;
1|key|2
sqlite> INSERT INTO bar (key, fooID) SELECT 'key', foo.id FROM foo WHERE foo.name='three' ON CONFLICT (bar.key) DO UPDATE SET fooID=excluded.id;
sqlite> select * from bar;
1|key|2

我尝试过的其他变体excluded.id要么不存在,要么不起作用。有人可以解释这里的行为,或者我可以如何在排除的行中打印列名列表,或者我可以调试它的另一种方式(或者甚至可能是一种更好的方式来执行我正在尝试执行的插入操作)?

sqlite upsert
  • 1 个回答
  • 758 Views
Martin Hope
Carlos Marmolejo
Asked: 2021-05-29 08:15:21 +0800 CST

带有 NOT NULL 列的 PostgreSQL UPSERT 问题

  • 0

我想知道当其中一列(column1 或 column2)为空时是否可以进行 upsert,我只需要部分更新,当然,我试图避免SELECT验证记录是否已经存在。

这是我正在努力实现的一个例子。

CREATE TABLE test(
    column1 timestamp NOT NULL,
    column2 uuid,
    status integer NOT NULL,
    id uuid NOT NULL,
    CONSTRAINT upsert_conflict UNIQUE (id, status)
);

我有这样的事情:

INSERT INTO test(column1, status, id) 
VALUES(now(), 0, <any uuid>)
ON CONFLICT ON CONSTRAINT upsert_conflict 
DO UPDATE SET column1= now()

这个按预期工作,但我也有这样的事情:

INSERT INTO test(column2, status, id) 
VALUES(gen_random_uuid (), 0, <existing uuid>)
ON CONFLICT ON CONSTRAINT upsert_conflict 
DO UPDATE SET column2= gen_random_uuid ()

我知道这INSERT是错误的,因为我们无法将 NULL 值设置为 column1,但假设我已经有一条具有该 id 和状态的记录,我想这样做UPDATE,而不是那样,我得到一个错误:...violates not-null constraint.因为缺少的列。

我正在根据用户传递给我的内容动态创建这些查询。有时我会有类似第一个示例的内容,有时会有类似第二个示例的内容,而且我不知道哪一列不能为空。

我希望你能帮助我。

postgresql upsert
  • 1 个回答
  • 1121 Views
Martin Hope
cycero
Asked: 2020-03-04 05:53:54 +0800 CST

Postgres 中的 SQL UPSERT

  • 3

我有以下 SQL:

UPDATE table_name as t 
  set value = c.value 
from (values(10, 'key_1', 60),(11, 'key_2', 10)) as c(id, key, value) 
where t.id = c.id and t.key = c.key

这仅在表中已经存在给定的“id”和“key”的情况下才有效。但是,如果数据库中存在“id”和“key”,我需要使其更新值,如果不存在,则使用给定的“id”、“key”和“value”插入新行。

我把这个例子作为一个 UPSERT 工作,但只适用于一组值:

WITH upsert AS (
 UPDATE table_name 
   SET value=80 
 WHERE id=10 
   AND key='key_1' RETURNING *
) 
INSERT INTO table_name (id, key, value) 
SELECT 10, 'key_1', 10 
WHERE NOT EXISTS (SELECT * FROM upsert);

我不确定如何将其合并到我的案例中以使用多个值(第一个示例与 UPDATE)。

我没有唯一的约束或索引(id, "key")

postgresql upsert
  • 1 个回答
  • 888 Views
Martin Hope
Zach Smith
Asked: 2019-08-29 05:49:20 +0800 CST

是否可以在 PostgreSQL 中使用单个语句将其插入到自引用表中?

  • 5

如果我有一张桌子A,像这样:

A {
 id SERIAL
 title TEXT
 ...
 parentId INT references A.id via a foreign key constraint
}

我正在从A_SOURCE没有parentId列的源表中提取数据。取而代之的是一parentTitle列。所以源表看起来像这样:

A_SOURCE {
  title TEXT
  parentTitle TEXT
}

在我意识到我无法轻松地将源中的列解析为目标中的列之前,我开始编写一个 upsert 语句以A通过从表中选择插入到表中。A_SOURCEparentTitleparentId

由于我无法确定在处理子项时是否已插入父项,因此连接或子查询可能不会返回任何结果。

我的 upsert 声明看起来像这样:

with source as (
  select
   title
   parentTitle
  from A_SOURCE 
)

insert into A
select
title
... I don't think I can resolve to parentId here?
from source
on concflict ...;

我知道我可以运行两个单独的语句:

  1. 插入null作为 parentId
  2. 然后更新第二条语句中的 parentId 字段

但是可以在单个查询中执行此操作吗?

postgresql upsert
  • 1 个回答
  • 525 Views
Martin Hope
ZAR
Asked: 2019-05-10 07:15:06 +0800 CST

使用现有的多对多连接更新数据

  • 1

这是一个策略问题——但我整个星期都在努力解决这个问题,并且真的可以使用一些智慧即服务。

语境

我正在尝试将一个干净、可操作的 PostgreSQL 数据库与来自大量杂乱、嘈杂的原始源表的清理记录拼凑在一起。

假设我们有联系人、公司、商店。许多联系人可以在公司工作。contacts_companies一家商店可能涉及多家公司(所有者、维护人员等)。和之间存在多对多 (M:N) 连接companies_stores。

表关系:

contacts >-< contacts_companies >-< companies >-< companies_stores >-< stores

unique on: contacts:email, companies:name, stores:formatted_address

多个数据源在上述表格之间存在各种重叠。有些只是存储信息,有些有一些联系人和存储信息等。当我浏览每个数据源时,数据将被清理然后更新到适当的表中。

问题

upsert 操作是问题所在。使用 ON CONFLICT 插入对于特定表来说很好,但是之间的连接点呢?

为了说明这个问题,假设我们有一个具有以下记录的数据源:

{owner: "Alice A.", email: "A@Alice_stores.net", store_address:"1 main st"}

这个记录有

  • 一个联系人{name: Alice A, email: A@Alice_stores.net},
  • 一家公司{name: Alice Stores}
  • 一家商店{address: 1 main st}

数据库可能已经有 的商店1 main st,但没有 的联系人/公司Alice。

如果我们单独更新联系人、公司和商店,我们将不知道在联结表中放置哪些正确的 ID:

  • 如果 INSERT,在联结处为 FK 使用新的 id。
  • 如果是 Update,则在联结处使用现有的 id 作为 fk。

问题

当全面存在 M:N 关系时,从各种来源更新多个表的最佳策略是什么?

我想到的一种策略是查询所有表/联结,将它们保存在内存中并在内存中执行所有条件/更新,然后进行更有力的 upsert。但这很快就会失控......

postgresql upsert
  • 1 个回答
  • 44 Views
Martin Hope
kokomaru
Asked: 2019-05-05 11:57:43 +0800 CST

为什么更新我们的数据库需要这么长时间?

  • 0

我目前有一个小应用程序接收 CSV 并调用一个程序来更新/插入记录,以使我们的 MySQL 5.6.39 数据库与我们使用的外部 Web 应用程序的数据库保持同步(我们没有直接访问权限或掌控)。我们每周更新一次,现在可能需要一天的大部分时间才能完成(约 60,000 条记录),所以我必须以某种方式加快速度。

这是我们使用的程序之一:

DELIMITER //

CREATE PROCEDURE `upsert-debtors` (
    internalCaseIDParam VARCHAR(50),
    caseNumberParam VARCHAR(50),
    bankruptcyCaseNumberParam VARCHAR(50),
    bankruptcyChapterNumberParam VARCHAR(50),
    bankruptcyDateFiledParam VARCHAR(50),
    bankruptcyDischargeDateParam VARCHAR(50),
    bankruptcyDismissalDateParam VARCHAR(50),
    accountReceivedDateParam VARCHAR(50),
    clientCommissionRateParam VARCHAR(50),
    clientFullNameParam VARCHAR(50),
    clientNameParam VARCHAR(50),
    collectionStatusDateParam VARCHAR(50),
    collectorUserNameParam VARCHAR(50),
    creditorParam VARCHAR(50),
    currentBalanceDueParam VARCHAR(50),
    currentClaimStatusParam VARCHAR(50),
    currentCostsParam VARCHAR(50),
    currentFeesParam VARCHAR(50),
    currentInterestParam VARCHAR(50),
    currentPerDiemParam VARCHAR(50),
    currentPrincipalParam VARCHAR(50),
    dateEnteredInSimplicityParam VARCHAR(50),
    debtorAkaParam VARCHAR(50),
    debtorAddressOneParam VARCHAR(50),
    debtorAddressTwoParam VARCHAR(50),
    debtorAddressStatusParam VARCHAR(50),
    debtorCellParam VARCHAR(50),
    debtorCityParam VARCHAR(50),
    debtorCompanyContactParam VARCHAR(50),
    debtorCompanyNameParam VARCHAR(50),
    debtorDobParam VARCHAR(50),
    debtorEmailParam VARCHAR(50),
    debtorFaxParam VARCHAR(50),
    debtorFirstNameParam VARCHAR(50),
    debtorFullNameParam VARCHAR(50),
    debtorLastNameParam VARCHAR(50),
    debtorLinkedBalanceParam VARCHAR(50),
    debtorMiddleNameParam VARCHAR(50),
    debtorOtherPhoneParam VARCHAR(50),
    debtorPhoneParam VARCHAR(50),
    debtorPrefixParam VARCHAR(50),
    debtorSSNParam VARCHAR(50),
    debtorStateParam VARCHAR(50),
    debtorSuffixParam VARCHAR(50),
    debtorZipParam VARCHAR(50),
    docketNumberParam VARCHAR(50),
    employerNameParam VARCHAR(50),
    employerPhoneParam VARCHAR(50),
    firstDelinquencyDateParam VARCHAR(50),
    hotZipParam VARCHAR(50),
    importNotesParam VARCHAR(250),
    lastAccessDateParam VARCHAR(50),
    lastDateReportedToEquifaxParam VARCHAR(50),
    lastDateReportedToExperianParam VARCHAR(50),
    lastDateReportedToTransunionParam VARCHAR(50),
    lastPaymentAmountParam VARCHAR(50),
    lastPaymentDateParam VARCHAR(50),
    lastPaymentNettedAmountParam VARCHAR(50),
    lastWorkDateParam VARCHAR(50),
    neverReportToCreditBureausParam VARCHAR(50),
    nextWorkDateParam VARCHAR(50),
    oldSysAcctSParam VARCHAR(50),
    isClosedParam VARCHAR(50),
    originalClaimAmountParam VARCHAR(50),
    originalClaimInterestRateParam VARCHAR(50),
    originatedDateParam VARCHAR(50),
    patientParam VARCHAR(50),
    patientDobParam VARCHAR(50),
    patientSsnParam VARCHAR(50),
    payerParam VARCHAR(50),
    paymentPlanAmount1Param VARCHAR(50),
    paymentPlanAmount2Param VARCHAR(50),
    paymentPlanAmount3Param VARCHAR(50),
    paymentPlanAmount4Param VARCHAR(50),
    paymentPlanAmount5Param VARCHAR(50),
    paymentPlanAmount6Param VARCHAR(50),
    nextPaymentPlanDueAmountParam VARCHAR(50),
    paymentPlanDate1Param VARCHAR(50),
    paymentPlanDate2Param VARCHAR(50),
    paymentPlanDate3Param VARCHAR(50),
    paymentPlanDate4Param VARCHAR(50),
    paymentPlanDate5Param VARCHAR(50),
    paymentPlanDate6Param VARCHAR(50),
    nextPaymentPlanDueDateParam VARCHAR(50),
    pmtPlanOverdueParam VARCHAR(50),
    physicianParam VARCHAR(50),
    pifCatalystParam VARCHAR(50),
    referringAttorneyNameParam VARCHAR(50),
    totalAttorneyFeesParam VARCHAR(50),
    totalClaimAmountParam VARCHAR(50),
    totalCostsParam VARCHAR(50),
    totalInterestParam VARCHAR(50),
    totalPaymentsParam VARCHAR(50),
    totalPaymentsPreAndPostParam VARCHAR(50),
    workflowBandParam VARCHAR(50),
    clientClaimNumberParam VARCHAR(50)
)
BEGIN
    UPDATE
        debtors
    SET
        case_number = caseNumberParam,
        bankruptcy_case_number = bankruptcyCaseNumberParam,
        bankruptcy_chapter_number = bankruptcyChapterNumberParam,
        bankruptcy_date_filed = bankruptcyDateFiledParam,
        bankruptcy_discharge_date = bankruptcyDischargeDateParam,
        bankruptcy_dismissal_date = bankruptcyDismissalDateParam,
        account_received_date = accountReceivedDateParam,
        client_commission_rate = clientCommissionRateParam,
        client_full_name = clientFullNameParam,
        client_name = clientNameParam,
        collection_status_date = collectionStatusDateParam,
        collector_user_name = collectorUserNameParam,
        creditor = creditorParam,
        current_balance_due = currentBalanceDueParam,
        current_claim_status = currentClaimStatusParam,
        current_costs = currentCostsParam,
        current_fees = currentFeesParam,
        current_interest = currentInterestParam,
        current_per_diem = currentPerDiemParam,
        current_principal = currentPrincipalParam,
        date_entered_in_simplicity = dateEnteredInSimplicityParam,
        debtor_aka = debtorAkaParam,
        debtor_address_one = debtorAddressOneParam,
        debtor_address_two = debtorAddressTwoParam,
        debtor_address_status = debtorAddressStatusParam,
        debtor_cell = debtorCellParam,
        debtor_city = debtorCityParam,
        debtor_company_contact = debtorCompanyContactParam,
        debtor_company_name = debtorCompanyNameParam,
        debtor_dob = debtorDobParam,
        debtor_email = debtorEmailParam,
        debtor_fax = debtorFaxParam,
        debtor_first_name = debtorFirstNameParam,
        debtor_full_name = debtorFullNameParam,
        debtor_last_name = debtorLastNameParam,
        debtor_linked_balance = debtorLinkedBalanceParam,
        debtor_middle_name = debtorMiddleNameParam,
        debtor_other_phone = debtorOtherPhoneParam,
        debtor_phone = debtorPhoneParam,
        debtor_prefix = debtorPrefixParam,
        debtor_s_s_n = debtorSSNParam,
        debtor_state = debtorStateParam,
        debtor_suffix = debtorSuffixParam,
        debtor_zip = debtorZipParam,
        docket_number = docketNumberParam,
        employer_name = employerNameParam,
        employer_phone = employerPhoneParam,
        first_delinquency_date = firstDelinquencyDateParam,
        hot_zip = hotZipParam,
        import_notes = importNotesParam,
        last_access_date = lastAccessDateParam,
        last_date_reported_to_equifax = lastDateReportedToEquifaxParam,
        last_date_reported_to_experian = lastDateReportedToExperianParam,
        last_date_reported_to_transunion = lastDateReportedToTransunionParam,
        last_payment_amount = lastPaymentAmountParam,
        last_payment_date = lastPaymentDateParam,
        last_payment_netted_amount = lastPaymentNettedAmountParam,
        last_work_date = lastWorkDateParam,
        never_report_to_credit_bureaus = neverReportToCreditBureausParam,
        next_work_date = nextWorkDateParam,
        old_sys_acct_s = oldSysAcctSParam,
        is_closed = isClosedParam,
        original_claim_amount = originalClaimAmountParam,
        original_claim_interest_rate = originalClaimInterestRateParam,
        originated_date = originatedDateParam,
        patient = patientParam,
        patient_dob = patientDobParam,
        patient_ssn = patientSsnParam,
        payer = payerParam,
        payment_plan_amount_1 = paymentPlanAmount1Param,
        payment_plan_amount_2 = paymentPlanAmount2Param,
        payment_plan_amount_3 = paymentPlanAmount3Param,
        payment_plan_amount_4 = paymentPlanAmount4Param,
        payment_plan_amount_5 = paymentPlanAmount5Param,
        payment_plan_amount_6 = paymentPlanAmount6Param,
        next_payment_plan_due_amount = nextPaymentPlanDueAmountParam,
        payment_plan_date_1 = paymentPlanDate1Param,
        payment_plan_date_2 = paymentPlanDate2Param,
        payment_plan_date_3 = paymentPlanDate3Param,
        payment_plan_date_4 = paymentPlanDate4Param,
        payment_plan_date_5 = paymentPlanDate5Param,
        payment_plan_date_6 = paymentPlanDate6Param,
        next_payment_plan_due_date = nextPaymentPlanDueDateParam,
        pmt_plan_overdue = pmtPlanOverdueParam,
        physician = physicianParam,
        pif_catalyst = pifCatalystParam,
        referring_attorney_name = referringAttorneyNameParam,
        total_attorney_fees = totalAttorneyFeesParam,
        total_claim_amount = totalClaimAmountParam,
        total_costs = totalCostsParam,
        total_interest = totalInterestParam,
        total_payments = totalPaymentsParam,
        total_payments_pre_and_post = totalPaymentsPreAndPostParam,
        workflow_band = workflowBandParam,
        client_claim_number = clientClaimNumberParam
    WHERE internal_case_id = internalCaseIDParam;

    IF ROW_COUNT() = 0 THEN
        INSERT INTO
          debtors (
            internal_case_id,
            case_number,
            bankruptcy_case_number,
            bankruptcy_chapter_number,
            bankruptcy_date_filed,
            bankruptcy_discharge_date,
            bankruptcy_dismissal_date,
            account_received_date,
            client_commission_rate,
            client_full_name,
            client_name,
            collection_status_date,
            collector_user_name,
            creditor,
            current_balance_due,
            current_claim_status,
            current_costs,
            current_fees,
            current_interest,
            current_per_diem,
            current_principal,
            date_entered_in_simplicity,
            debtor_aka,
            debtor_address_one,
            debtor_address_two,
            debtor_address_status,
            debtor_cell,
            debtor_city,
            debtor_company_contact,
            debtor_company_name,
            debtor_dob,
            debtor_email,
            debtor_fax,
            debtor_first_name,
            debtor_full_name,
            debtor_last_name,
            debtor_linked_balance,
            debtor_middle_name,
            debtor_other_phone,
            debtor_phone,
            debtor_prefix,
            debtor_s_s_n,
            debtor_state,
            debtor_suffix,
            debtor_zip,
            docket_number,
            employer_name,
            employer_phone,
            first_delinquency_date,
            hot_zip,
            import_notes,
            last_access_date,
            last_date_reported_to_equifax,
            last_date_reported_to_experian,
            last_date_reported_to_transunion,
            last_payment_amount,
            last_payment_date,
            last_payment_netted_amount,
            last_work_date,
            never_report_to_credit_bureaus,
            next_work_date,
            old_sys_acct_s,
            is_closed,
            original_claim_amount,
            original_claim_interest_rate,
            originated_date,
            patient,
            patient_dob,
            patient_ssn,
            payer,
            payment_plan_amount_1,
            payment_plan_amount_2,
            payment_plan_amount_3,
            payment_plan_amount_4,
            payment_plan_amount_5,
            payment_plan_amount_6,
            next_payment_plan_due_amount,
            payment_plan_date_1,
            payment_plan_date_2,
            payment_plan_date_3,
            payment_plan_date_4,
            payment_plan_date_5,
            payment_plan_date_6,
            next_payment_plan_due_date,
            pmt_plan_overdue,
            physician,
            pif_catalyst,
            referring_attorney_name,
            total_attorney_fees,
            total_claim_amount,
            total_costs,
            total_interest,
            total_payments,
            total_payments_pre_and_post,
            workflow_band,
            client_claim_number
          )
        VALUES
          (         
            internalCaseIDParam,
            caseNumberParam,
            bankruptcyCaseNumberParam,
            bankruptcyChapterNumberParam,
            bankruptcyDateFiledParam,
            bankruptcyDischargeDateParam,
            bankruptcyDismissalDateParam,
            accountReceivedDateParam,
            clientCommissionRateParam,
            clientFullNameParam,
            clientNameParam,
            collectionStatusDateParam,
            collectorUserNameParam,
            creditorParam,
            currentBalanceDueParam,
            currentClaimStatusParam,
            currentCostsParam,
            currentFeesParam,
            currentInterestParam,
            currentPerDiemParam,
            currentPrincipalParam,
            dateEnteredInSimplicityParam,
            debtorAkaParam,
            debtorAddressOneParam,
            debtorAddressTwoParam,
            debtorAddressStatusParam,
            debtorCellParam,
            debtorCityParam,
            debtorCompanyContactParam,
            debtorCompanyNameParam,
            debtorDobParam,
            debtorEmailParam,
            debtorFaxParam,
            debtorFirstNameParam,
            debtorFullNameParam,
            debtorLastNameParam,
            debtorLinkedBalanceParam,
            debtorMiddleNameParam,
            debtorOtherPhoneParam,
            debtorPhoneParam,
            debtorPrefixParam,
            debtorSSNParam,
            debtorStateParam,
            debtorSuffixParam,
            debtorZipParam,
            docketNumberParam,
            employerNameParam,
            employerPhoneParam,
            firstDelinquencyDateParam,
            hotZipParam,
            importNotesParam,
            lastAccessDateParam,
            lastDateReportedToEquifaxParam,
            lastDateReportedToExperianParam,
            lastDateReportedToTransunionParam,
            lastPaymentAmountParam,
            lastPaymentDateParam,
            lastPaymentNettedAmountParam,
            lastWorkDateParam,
            neverReportToCreditBureausParam,
            nextWorkDateParam,
            oldSysAcctSParam,
            isClosedParam,
            originalClaimAmountParam,
            originalClaimInterestRateParam,
            originatedDateParam,
            patientParam,
            patientDobParam,
            patientSsnParam,
            payerParam,
            paymentPlanAmount1Param,
            paymentPlanAmount2Param,
            paymentPlanAmount3Param,
            paymentPlanAmount4Param,
            paymentPlanAmount5Param,
            paymentPlanAmount6Param,
            nextPaymentPlanDueAmountParam,
            paymentPlanDate1Param,
            paymentPlanDate2Param,
            paymentPlanDate3Param,
            paymentPlanDate4Param,
            paymentPlanDate5Param,
            paymentPlanDate6Param,
            nextPaymentPlanDueDateParam,
            pmtPlanOverdueParam,
            physicianParam,
            pifCatalystParam,
            referringAttorneyNameParam,
            totalAttorneyFeesParam,
            totalClaimAmountParam,
            totalCostsParam,
            totalInterestParam,
            totalPaymentsParam,
            totalPaymentsPreAndPostParam,
            workflowBandParam,
            clientClaimNumberParam
          );
    END IF;
END //

DELIMITER ;

就程序的设置或某些数据库设置而言,是否有任何会导致它像现在这样慢的东西?

谢谢!

mysql upsert
  • 4 个回答
  • 69 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve