SQL 事务设置临时值
SQL Transaction Set Temporary Value
我对数据库和 SQL 比较陌生,我不清楚事务如何或是否与我试图解决的问题有关。我希望能够在数据库中临时设置一个值table,运行一些查询,然后清除设置的值,我不希望事务之外的任何操作能够查看或更改已设置的临时值。
我这样做的原因是我可以创建预定义的视图,这些视图根据当前用户的 id 等变量查询某些数据。为了让预定义的视图能够访问当前用户的 ID,我会在查询视图之前将 ID 保存到一个特殊的 table 中,然后立即删除该 ID。我不想担心其他用户在交易过程中覆盖当前用户的 ID。这是交易的正确用途吗?
如果有不同,我正在使用 H2。
SET @tempVar=value;
我不知道您是否真的需要经历创建临时文件 table 和设置值的痛苦。这看起来简单多了。
然后你可以做 - SELECT * FROM TABLE_NAME WHERE COLUMN=@tempVar;
我想你想要一个过程或函数。两者都可以将参数作为输入。
例如
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)
我对数据库和 SQL 比较陌生,我不清楚事务如何或是否与我试图解决的问题有关。我希望能够在数据库中临时设置一个值table,运行一些查询,然后清除设置的值,我不希望事务之外的任何操作能够查看或更改已设置的临时值。
我这样做的原因是我可以创建预定义的视图,这些视图根据当前用户的 id 等变量查询某些数据。为了让预定义的视图能够访问当前用户的 ID,我会在查询视图之前将 ID 保存到一个特殊的 table 中,然后立即删除该 ID。我不想担心其他用户在交易过程中覆盖当前用户的 ID。这是交易的正确用途吗?
如果有不同,我正在使用 H2。
SET @tempVar=value;
我不知道您是否真的需要经历创建临时文件 table 和设置值的痛苦。这看起来简单多了。
然后你可以做 - SELECT * FROM TABLE_NAME WHERE COLUMN=@tempVar;
我想你想要一个过程或函数。两者都可以将参数作为输入。
例如
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)