我的表是这样的
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 #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';
但是,当我尝试以用户 steved 或 johnd 的身份使用 SQLBuddy 登录并尝试搜索记录时,它并没有按预期工作 - 所有记录都是“可见的”。
也许有一种方法可以使用 SESSION_USER() 来完成此操作,但我对此一无所知。