Simon Slavin wrote:
> On 15 Jun 2009, at 2:37am, Simon Slavin wrote:
>
>
>> The examples for the error text I've found are all simple text
>> strings, for instance
>>
>> RAISE(ROLLBACK, 'delete on table "foo" violates foreign key constraint
>> "fk_foo_id"')
>>
>> What I want to do is more like
>>
>> RAISE(ROLLBACK, 'Attempt to delete author '||old.name||' who has
>> books.')
>>
>> but that doesn't work.
>>
>
> No responses to this ? Can someone confirm for me that error messages
> from 'RAISE' have to be just pre-assigned text strings and can't be
> expressions ?
>
> Simon.
>
Simon,
From the parser you can see the allowed raise function syntax.
expr ::= RAISE LP raisetype COMMA nm RP
Where nm is the error message. The nm nonterminal can be replaced by the
following:
nm ::= id
nm ::= STRING
nm ::= JOIN_KW
and the id can bereplaced by;
id ::= ID
id ::= INDEXED
So you can see that the parser is basically designed to only accept a
STRING at that position, not an expression which is what would be
required to allow concatenation and other function calls. I assume that
the other possible values (join keyword etc) would be caught and
reported as errors.
HTH
Dennis Cote
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users