SQL事务集临时值

时间:2017-10-30 02:06:13

标签: sql h2 sqltransaction

我对数据库和SQL比较陌生,我不清楚交易如何或是否与我试图解决的问题有关。我希望能够在数据库表中临时设置一个值,运行一些查询,然后清除设置的值,并且我不希望事务之外的任何操作能够查看或更改临时值设定的价值。

我这样做的原因是我可以创建预定义视图,根据变量(例如当前用户的id)查询某些数据。为了使预定义视图能够访问当前用户的id,我会在查询视图之前将id保存到特殊表中,然后立即删除id。我不想担心其他用户在事务处理过程中覆盖当前用户的id。这是否适用于交易?

如果有所作为,我正在使用H2。

2 个答案:

答案 0 :(得分:2)

SET @tempVar=value;

我不知道你是否真的需要经历创建临时表和设置值的痛苦。这似乎更简单。

然后你可以做 - SELECT * FROM TABLE_NAME WHERE COLUMN=@tempVar;

答案 1 :(得分:1)

我认为你想要一个程序或功能。两者都可以将参数作为输入。

离。

CREATE PROCEDURE pr_emp
(
    @input INT
) 
AS 
SELECT * 
  FROM myTable
 WHERE emp_id = @input

离。

CREATE FUNCTION v_empid (@input INT)
RETURNS TABLE
AS
RETURN
   SELECT * FROM myTABLE WHERE emp_id = @input;

这些可以让您访问empid的信息。例如:

SELECT * FROM v_empid(32)