我创建了一个包含6个表的数据库,并将它们在不同的模式下进行了15次。每个模式代表一个校园/学校。
我需要完成的任务是创建登录名,并且在用户/教师登录后,它应该仅显示学生和链接到用户/教师的信息。
我可以创建一个基本的UWP应用登录名,以比较SQL数据库中的用户名和密码。
我只需要有关如何将其仅检索登录的用户信息的准则。
我期望的输出是当user_1登录时,仅显示链接到该用户的信息。
答案 0 :(得分:0)
您会认为这种方法可能会出现问题,但是无论如何我们还是要继续使用它。在数据库中,每个对象都属于一个模式-对吗?通常,您编写
之类的查询select col1 ... from orders order by ...;
现在实际上使用什么表来满足该查询?您可能已经了解了dbo模式,因为它存在于每个数据库中。如果仅按名称引用表,则数据库引擎必须找到要使用的实际表。首先,它将在当前user's default schema中查找该表是否存在。如果是这样,则使用该表。如果不是,引擎将look in the dbo schema用于该表。
知道了这一点,您可以编写查询来利用该逻辑。请注意“可以”-这不是建议,但可以实现您的目标。如果使用一个零件名称编写查询,那么所有这些名称将相对于执行时当前用户的默认架构。
因此,假设用户X的默认架构为Z。您的应用尝试执行查询“从orderDate desc的订单中选择*”。表Z.orders将用作源(如果存在)。如果架构Z中不存在该表,则引擎将使用dbo.Orders。如果该表不存在,将生成错误。
那么,这与您在应用程序中使用的任何框架兼容吗?不知道另请注意,您正在编写应用程序。您可以使用自己的书面代码来完成所有这些工作。而且,如果可以在查询中动态添加架构名称,则也可以出于任何原因执行各种操作来“自定义”结果。非常简单-这就是所有代码,因此您可以执行任何操作。