限制MySQL最终用户仅查看自己的条目

时间:2014-05-01 17:24:20

标签: mysql sql select data-entry

我的表就像这样

ID   FileNumber   SellerRep   BuyerRep   Address
123  142366       John Doe    Steve Doe   123 Cute Ave
122  142365       Steve Doe   John Doe    412 Best Blvd
121  142364       John Doe    John Doe    234 Park Ave
120  132363       Steve Doe   Steve Doe   233 Cool St
119  132362       Steve Doe   Frank Good  432 Bad Street

users: johnd (lists his name as John Doe)
       steved (lists his name as Steve Doe)

如何限制最终用户仅查看/查看自己的条目。他的条目总是在SellerRep或BuyerRep列中包含他的名字,有时在两者中都可能拼写错误(例如Steven Do等)。但是,SellerRep或BuyerRep列中的任何一个都可以包含非用户的名称,如表示例中ID为#119的条目中所示。

所以,基本上,如果Steve Doe登录,我希望他只看到ID为#119,120,122,123的条目,如果John Doe登录,我想将他的观点仅限于ID为ID的记录#123,122,121。但有一个问题是其中一个可能在SellerRep或BuyerRep列中指定了另一个用户的全名,在这种情况下我不希望其他用户看到此条目。

有没有办法用视图或触发器而不是在PHP页面中完成此操作,即使我必须添加另一个像@user和auto_complete这样的列,如果可能的话。

至少我能想到的是:

CREATE VIEW saleslogview
AS
SELECT *
FROM saleslog
WHERE SellerRep = 'Steve Doe';

CREATE VIEW saleslogview
AS
SELECT *
FROM saleslog
WHERE BuyerRep = 'John Doe';

CREATE VIEW saleslogview
AS
SELECT *
FROM saleslog
WHERE BuyerRep = 'Steve Doe';

CREATE VIEW saleslogview
AS
SELECT *
FROM saleslog
WHERE SellerRep = 'John Doe';

但是,当我尝试以像SQLBuddy这样的用户steved或johnd登录并尝试搜索记录时,它没有按预期工作 - 所有记录都是"可见"。

也许有一种方法可以使用SESSION_USER()完成此任务,但我对此一无所知。

0 个答案:

没有答案