|
|
|
|
|
by pg314
3480 days ago
|
|
You can use VIEWs [1] as an abstraction mechanism. It's not perfect, but it can abstract certain things away. I think it would work for your first example. Something like: CREATE VIEW permitted_X AS
SELECT X.*
FROM X, user
WHERE X.user_id = user.user_id
AND (X.permission OR user.is_super);
You second example doesn't have enough info for me to see if it can be accomplished by a VIEW.Other abstraction mechanisms are user-defined functions. [1] https://www.postgresql.org/docs/current/static/sql-createvie... |
|
Some of these things are fixed up by the product-specific languages, but only some of these things.
Here's another example; using your product-specific language, can you create a table for me with a variable number and types of columns based on the parameters passed in? I don't know them all, but I bet it's hard in most or all of them. No credit if your product-specific language lets you bash a string together and then somehow execute it; I'm calling for everything to be done via first-class mechanisms. (Also, I'm not asking for whether this is a good idea; it is obviously a tricky thing of dubious use. But that should be a software engineering determination, not a language restriction.)