具有只读访问权限的 Sql 虚拟表:插入、删除、更新?
Posted
技术标签:
【中文标题】具有只读访问权限的 Sql 虚拟表:插入、删除、更新?【英文标题】:Sql Virtual Table with Read Only Access: insert, delete , update? 【发布时间】:2015-01-13 03:23:44 【问题描述】:2 个问题:
-
我能否使用对数据库具有只读访问权限的用户创建虚拟表?
例如:
DECLARE @tblStudentDtl TABLE(
SrNo int IDENTITY not null,
sName varchar(50) ,
sAddress varchar(100),
ClassName varchar(100)
)
-
我是否能够插入、删除和更新虚拟 sql 表中的数据,该表是使用对数据库具有只读访问权限的用户创建的?
例如:
DECLARE @tblStudentDtl TABLE(
SrNo int IDENTITY not null,
sName varchar(50) ,
sAddress varchar(100),
ClassName varchar(100)
)
INSERT INTO @tblStudentDtl (sName,sAddress,ClassName)
SELECT sName, sAddress,ClassName FROM tblStudent A JOIN tblClass B ON A.ClassId=B.ClassId WHERE sName like +‘s%’ ORDER BY sName
SELECT * FROM @tblStudentDtl
【问题讨论】:
我从未听说过所谓的虚拟表。它是一个表值变量或表变量。 虚拟表无处不在:例如tipsntracks.com/311/… 并非无处不在:social.technet.microsoft.com/Search/… 1) 你试过了吗?您发布了代码,所以您是否尝试从对当前数据库没有写访问权限的用户执行该代码? 2) 您应该非常警惕从作者编造随机术语的文章中获取任何信息。这表明他们并不真正知道他们在说什么。可以考虑一下,因为英语显然不是作者的第一语言,但他说“使用 DECLARE 语句,不会在 tempdb 中创建临时表”,这不是真的。而且你最好不要在面试中使用“虚拟表”这个词;-)。 对作者公平地说,要么是他对 Oracle/PL-SQL 的误解,甚至 Metalink 在某些文档中确实引用了“虚拟表”,要么是作者更习惯于使用 SQLite确实有一个虚拟表结构 (sqlite.org/vtab.html) 【参考方案1】:这些“虚拟表”只是表变量,与在 T-SQL 中声明变量没有太大区别。您不需要任何特殊权限。表数据甚至不存储在您连接的数据库中 - 它存储在 tempdb 中,与临时表相同。
关于表数据类型的 MSDN Docs:http://msdn.microsoft.com/en-us/library/ms175010.aspx
【讨论】:
以上是关于具有只读访问权限的 Sql 虚拟表:插入、删除、更新?的主要内容,如果未能解决你的问题,请参考以下文章