我的表就像这样
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()完成此任务,但我对此一无所知。