On 1/30/2015 10:44 PM, David Barrett wrote:
Is it possible to create a trigger that calls a custom function and passes in NEW.*?
Not literally NEW.* . You'll have to spell out individual columns as parameters.
2) I'm *assuming* if you pass a "*" into that function, it'll just call that function with however many columns are available.
Your assumption is incorrect. If I recall correctly, the syntax "myFunc(*)" is accepted, and is equivalent to "myFunc()" - that is, no parameters are passed. Pretty much the only reason to allow this syntax is to accept "count(*)".
3) It seems that there is a way to create a custom trigger that has no byproduct but to call SELECT. The only reason I can imagine you'd want to do that is to call a custom function. But can I call that function with all columns using a *? (I can't quite figure this out from the docs alone.)
Well, you could have tested it, and discovered it didn't work. You don't even need a custom function, you could have used a built-in one.
SELECT myFunc( NEW.* );
That would produce a syntax error.
Are these assumptions correct, and should the above generally work?
No, and no.
My goal is to execute myFunc() every time there's an INSERT/UPDATE/DELETE on a given table -- but I want myFunc() to be reusable and not need to know the structure of the table it's being called on.
I'm not sure how the necessity of myFunc(NEW.*) syntax follows from this. Why can't the trigger call myFunc(new.colA, new.colB)?
You can write a variadic custom function (one that can be called with an arbitrary number of arguments), if that's what you are asking.
-- Igor Tandetnik _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users