如何删除/移动/标记电子邮件时,如何像Gmail一样实现对MySQL数据库的撤消更改功能.
到目前为止,我有一个系统日志表,其中包含用户执行的确切sql语句.
例如,我正在尝试转换:
INSERT INTO table (id, column1, column2) VALUES (1,'value1', 'value2')
Run Code Online (Sandbox Code Playgroud)
成:
DELETE FROM table WHERE id=1, column1='value1', column2='value2'
Run Code Online (Sandbox Code Playgroud)
是否有内置函数来执行此操作,如cisco路由器命令,如
(NO|UNDO|REVERT) INSERT INTO table (id, column1, column2) VALUES (1,'value1', 'value2')
Run Code Online (Sandbox Code Playgroud)
也许我的方法是不正确的,我应该保存我的行的当前状态和更改的行,以回到它的原始状态?
就像是:
original_query = INSERT INTO table (id, column1, column2) VALUES (1,'value1', 'value2')
executed_query = INSERT INTO table (id, column1, column2) VALUES (1,'change1', 'change2')
Run Code Online (Sandbox Code Playgroud)
后来变成:
INSERT INTO table (id, column1, column2) VALUES (1,'value1', 'value2') ON DUPLICATE KEY UPDATE
column1=VALUES(column1), column2=VALUES(column2)
Run Code Online (Sandbox Code Playgroud)
但也许它不适用于新插入的行,或者如果我修改主键可能会导致麻烦,所以我宁愿让它们保持不变.
这是我的日志表:
CREATE TABLE `log` (
`id` …Run Code Online (Sandbox Code Playgroud) 我见过有关此错误的问题,但要么调用外部存储,要么尝试使用不兼容的类型或使用变量。所以我设置了一个非常简单的示例,但仍然无法使其工作。
DECLARE
TYPE mytype IS TABLE OF VARCHAR2(4) INDEX BY PLS_INTEGER;
mytable mytype;
BEGIN
mytable((mytable.COUNT+1)) := 'COD1';
mytable((mytable.COUNT+1)) := 'COD2';
mytable((mytable.COUNT+1)) := 'COD3';
mytable((mytable.COUNT+1)) := 'COD4';
--IF 'COD1' MEMBER OF mytable THEN DBMS_OUTPUT.PUT_LINE('We have the code'); END IF;
FOR i IN 1..mytable.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(mytable(i));
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
如果我运行它,我会得到这个:
COD1
COD2
COD3
COD4
Run Code Online (Sandbox Code Playgroud)
如果我取消注释 IF (我打算使用的),我会收到此错误。
PLS-00306: wrong number or types of arguments in call to MEMBER OF
Run Code Online (Sandbox Code Playgroud)
也许我没有正确使用它或者有什么问题。
我试图在循环中使用它,我将已使用的代码保存在“数组”中,然后给出一个代码,我需要知道它是否已被使用。我最初的解决方案是附加到像“.COD1..COD2”这样的字符串。并做了一个简单的 INSTR 但似乎不正确,我喜欢数组。我听说过那个函数(的成员)只要按照我认为应该的方式工作就可以完成我想要的事情。
你能告诉我如何正确使用,我做错了什么或者如何以更好的方式解决我的问题?
差不多了...我把它改成
-- Declare
TYPE mytype IS TABLE OF …Run Code Online (Sandbox Code Playgroud) 我正在 pl/SQL 中开发一些连接到多个外部服务的应用程序,
例子:
declare
utl_req utl_http.req;
utl_resp utl_http.resp;
begin
-- This line in production for security, but takes forever to get authorized
-- by oracle host provider :@
-- utl_http.set_wallet('file:/path/wallet', 'password');
-- In test env i would like something like
-- utl_http.set_option('CURLOPT_SSL_VERIFYHOST', false);
-- utl_http.set_option('CURLOPT_SSL_VERIFYPEER', false);
utl_req := utl_http.begin_request('https://login.microsoftonline.com/...
/oauth2/token', 'POST', 'HTTP/1.1');-- Die
--...more code
end;
Run Code Online (Sandbox Code Playgroud)
输出:
ORA-29024: Certificate validation failure
Run Code Online (Sandbox Code Playgroud)
有没有办法命令 Oracle 忽略证书验证以进行测试,无需等待将证书添加到钱包的身份验证。
类似于 php
$curl_request = curl_init();
curl_setopt($curl_request, CURLOPT_URL, 'https://login.microsoftonline.com/...
/oauth2/token');
curl_setopt($curl_request, CURLOPT_POST, 1);
// No thankyou …Run Code Online (Sandbox Code Playgroud)