我们可以更改方法DELIMITER $$
CREATE PROCEDURE sp_Example()
BEGIN
SET @countOfTable = (select count(*) from Db1.tbl1);
IF @countOfTable > 0
THEN
INSERT INTO db1.tblLog
(
BatchStoreId,
Origin
)
SELECT
(SELECT DISTINCT SomeID FROM db1.tbl1) as SomeId,
(SELECT Origin FROM db1.tblKey WHERE Origin = 'ThisText') as Origin;
ELSE
SELECT 'table is empty!' as ErrorMessage;
End if;
SET @countOpp = (SELECT count(*) FROM db1.tbl2),
@MR = (SELECT DISTINCT SomeID FROM db1.tbl1),
@Opp = (SELECT DISTINCT OtherIDFROM db1.tbl2);
IF @countOpp > 0 and @MR = @Opp
THEN
INSERT INTO db1.tbllog
(
SomeID,
Origin
)
SELECT
(SELECT DISTINCT SomeID FROM db1.tbl2) as SomeID,
(SELECT Origin FROM db1.tblkey WHERE Origin = 'Secondary Text') as Origin;
ELSE
SELECT 'SomeID's Do Not Match in tables db1.tbl1 and db1.tbl2' as ErrorMessage;
End if;
END;
或变量sudo()
,以便每次都能获得当前用户而不是管理员吗?
答案 0 :(得分:0)
如果是SUPERUSER_ID
,那就是固定变量。您可以在OCB的openerp文件夹的文件__init__.py
中修改它:
SUPERUSER_ID = 1 # Put any ID you want
当然,我不建议你这样做。如果您想获得当前的UID,请执行以下操作:
self.env.user.id
但是,如果是sudo()
,你可以毫无问题地做你想做的事。只需将当前用户的ID作为参数发送给方法,如下所示:
xxx.sudo(self.env.user.id).xxx()
但是,您知道任何操作都是由当前用户执行的,除非您应用方法sudo()
使操作由与当前用户不同的其他用户执行。我想说的是,如果你什么都不做,那么这些动作是由当前用户执行的,你不需要使用sudo()
。