标签: dml

Salesforce Apex中的MIXED_DML_OPERATION错误更新用户对象时触发

我在Contact对象上有一个触发器,当我尝试在此触发器中更新用户记录时,我得到以下异常:

"MIXED_DML_OPERATION,更新非安装对象后,不允许对安装对象进行DML操作(反之亦然):用户,原始对象:联系人"

触发代码:

trigger UpdateContactTrigger on Contact (after update) {

    User u = [SELECT Id, IsActive FROM User WHERE IsActive = true];

    u.IsActive = false;
    update u;

}
Run Code Online (Sandbox Code Playgroud)

从Contact触发器更新用户记录的字段时,如何避免此错误?

salesforce dml apex-code

3
推荐指数
1
解决办法
7577
查看次数

动态替换XML DML中节点的值

我现在正在努力解决这个问题:如何替换文本等于某个变量值的无类型XML列中的节点值?可能吗?

我的XML:

<attrs>
  <attr>ManualInsert</attr>
  <attr>ManualInsert2</attr>
  <attr>ManualInsert4</attr>
  <attr>ManualInsert8</attr>
</attrs>
Run Code Online (Sandbox Code Playgroud)

我的尝试:

DECLARE @OldValue Varchar(255) =  'ManualInsert'
DECLARE @NewValue Varchar(255) =  'ReplacedValue'

UPDATE
    Labels
SET
    Attributes.modify('replace value of (/attrs/attr/text())[1]
                       with
                       if ((/attrs/attr/text() = sql:variable("@OldValue")))
                       then sql:variable("@NewValue")
                       else () ')
WHERE
    Id = 2000046
Run Code Online (Sandbox Code Playgroud)

信息: (0 row(s) affected)

DECLARE @OldValue Varchar(255) =  'ManualInsert'
DECLARE @NewValue Varchar(255) =  'ReplacedValue'

UPDATE
    Labels
SET
    Attributes.modify('replace value of (/attrs/attr[text() = sql:variable("@OldValue")])[1]
                       with sql:variable("@NewValue")')
WHERE
    Id = 2000046
Run Code Online (Sandbox Code Playgroud)

信息:

Msg 2356, Level 16, State 1, Line 7
XQuery [Labels.Attributes.modify()]: …
Run Code Online (Sandbox Code Playgroud)

xml t-sql sql-server xquery dml

3
推荐指数
1
解决办法
2万
查看次数

SQLite python executemany() 搞砸了?“只能执行 DML 语句”

我有一个适用于执行的查询,但是当我尝试 executemany() 时,我收到一个奇怪的错误说 ProgrammingError: executemany() can only execute DML statements.

查询如下所示:

c.execute("SELECT * FROM Donors WHERE firstname=:First AND lastname=:Last",ds[1].donor).fetchall()
Run Code Online (Sandbox Code Playgroud)

对比

c.executemany("SELECT * FROM Donors WHERE firstname=:First AND lastname=:Last",[ds[1].donor,ds[2].donor]).fetchall()
Run Code Online (Sandbox Code Playgroud)

ds[i].donor 的样子 {'First': 'Cathy', 'Last': 'Lee'}

是否有明显的我遗漏的东西,或者这是一个更深层次的错误?

python sqlite dml

3
推荐指数
1
解决办法
1398
查看次数

Oracle - Oracle如何管理特定于事务的DML语句

想象一下,我有这个简单的表格:

Table Name: Table1
Columns:    Col1 NUMBER (Primary Key)
            Col2 NUMBER
Run Code Online (Sandbox Code Playgroud)

如果我将记录插入Table1而没有提交...

INSERT INTO Table1 (Col1, Col2) Values (100, 1234);
Run Code Online (Sandbox Code Playgroud)

Oracle如何知道下一个INSERT语句违反了PK约束,因为尚未向数据库提交任何内容.

INSERT INTO Table1 (Col1, Col2) Values (100, 5678);
Run Code Online (Sandbox Code Playgroud)

Oracle在何处/如何管理事务,以便在我尚未提交事务时知道我违反了约束.

sql oracle oracle10g dml

2
推荐指数
1
解决办法
590
查看次数

如何使用sql命令INSERT输入新行

问:

我想知道在我的表中插入新行的SQL查询的语法.

我的意思是,我想在我的表格中输入以下内容abc:

  aaaaaaaaaa

  bbbbbbbbbb

  cccccccccccc
Run Code Online (Sandbox Code Playgroud)

通过INSERT命令维护新行.

提前致谢

sql informix newline dml

2
推荐指数
1
解决办法
2万
查看次数

在 SQL Server 2008 中设置条件必填字段

我需要对字段提出条件要求。我不确定这在 SQL 中看起来如何。我将 Management Studio 与 SQL Server 2008 一起使用。本质上,我希望仅当另一个字段输入数据时才需要某个字段。我研究了触发器,我认为这就是我需要的,但我不确定是什么类型(DDLDML等)。

例如:

当用户输入时间时,他们还必须输入日期,但如果没有输入时间,则不需要日期。SQL 将发送错误,并且不允许用户在填写时间字段时不输入日期来完成记录。

谢谢!

ddl dml sql-server-2008

2
推荐指数
1
解决办法
2906
查看次数

SQL有COUNT和JOIN

我试过这个问题:在不到2家医院工作的医生是什么?但结果并不是我的预期.

我有这些表:

CREATE TABLE Hospital (
    hid INT PRIMARY KEY,
    name VARCHAR(127) UNIQUE,
    country VARCHAR(127),
    area INT
);
CREATE TABLE Doctor (
    ic INT PRIMARY KEY,
    name VARCHAR(127),
    date_of_birth INT,
);
CREATE TABLE Work (
    hid INT,
    ic INT,
    since INT,
    FOREIGN KEY (hid) REFERENCES Hospital (hid),
    FOREIGN KEY (ic) REFERENCES Doctor (ic),
    PRIMARY KEY (hid,ic)
);
Run Code Online (Sandbox Code Playgroud)

我试过这个:

SELECT DISTINCT D.ic 
    FROM Doctor D, Work W 
    JOIN Hospital H ON (H.hid = W.hid)
    WHERE D.bi = W.bi
    GROUP BY (D.ic) …
Run Code Online (Sandbox Code Playgroud)

sql dml

2
推荐指数
1
解决办法
9048
查看次数

执行包含BLOB数据的Array DML命令是否可行且有意义?

是否可以执行在参数数组中传递BLOB字段数据的Array DML INSERTUPDATE语句?我问题中更重要的部分,如果可能的话,包含BLOB数据的Array DML命令是否仍然比逐个执行命令更有效?

我注意到TADParam有一个AsBlobs索引属性,所以我认为它可能是可能的,但我还没有尝试过这个,因为没有提及性能也没有示例显示这一点,因为索引属性的类型RawByteString不太适合我的需要.

我正在使用FireDAC并使用SQLite数据库(Params.BindMode = pbByNumber因此我使用INSERT多个本机SQLite VALUES).我的目标是尽可能快地存储大约10万条包含非常小的BLOB数据(每条记录大约1kB)的记录(以FireDAC的抽象成本计算).

delphi sqlite dml anydac firedac

2
推荐指数
1
解决办法
552
查看次数

DynamoDB .NET - 删除表中的所有项目

我正在学习如何使用DynamoDB for .net而且我有一个疑问,是否有正确的方法从现有表中删除所有项目?我的意思是,我不想删除表,只是清空它.我已经阅读了有关批处理的内容,但它们对我没什么帮助.

我有这个

private string DeleteAllFromTable()
    {
        string result = string.Empty;

        try
        {

            var request = new BatchWriteItemRequest
            {
                RequestItems = new Dictionary<string, List<WriteRequest>> 
                { 
                    {
                        this.Tablename, new List<WriteRequest>
                        {
                            new WriteRequest
                            {
                                DeleteRequest = new DeleteRequest
                                {
                                    Key = new Dictionary<string,AttributeValue>()
                                    {
                                        { "Id", new AttributeValue { S = "a" } }
                                    }
                                }
                            }
                        }
                    }
                }
            };

            var response = this.DynamoDBClient.BatchWriteItem(request);

        }
        catch (AmazonDynamoDBException e)
        {

        }


        return result;
    }
Run Code Online (Sandbox Code Playgroud)

但是,当然,只删除与值"a"匹配的id.

谢谢.

.net c# dml amazon-dynamodb

2
推荐指数
1
解决办法
4124
查看次数

PL/SQL错误:应该重构包含DML语句的循环以使用BULK COLLECT和FORALL

我在整个互联网上搜索了一些例子,但我仍然无法理解为什么我不能在这个游标中使用DML语句.我有点想念它背后的理论,但我不会否认一个如何正确写这个的例子会让我的生活变得更轻松.这是我正在处理的查询(注意:我在未找到结果时删除了退出,如果光标已经打开则关闭,这样的事情只关注这里的主要点):

DECLARE
    // lots of vars

    // the cursor below gets all datasources connected to Node XXYZ123
    CURSOR DataSourceCheck
    IS
        SELECT NODENAAM, NAAM, URL, DBNODE1, DBNODE2, DBUSERNAAM, DBNAAM
        FROM SCHEMA.TABLENAME
        WHERE NODENAAM = 'XXYZ123';

    // this cursor will execute row-by-row based on the result set of above cursor
    CURSOR CheckIfOnlyDataSource
    IS
        SELECT NODENAAM, NAAM, URL, DBNODE1, DBNODE2, DBUSERNAAM, DBNAAM
        FROM SCHEMA.TABLENAME
        WHERE DBUSERNAAM = var_dbusernaam AND (DBNode1 = var_dbnode1 OR DBNode2 = var_dbnode2);

BEGIN  
    OPEN DataSourceCheck;   
    LOOP
        FETCH DataSourceCheck into …
Run Code Online (Sandbox Code Playgroud)

oracle bulkinsert dml

1
推荐指数
1
解决办法
5864
查看次数