"Anabell Chan" <[EMAIL PROTECTED]>
24/03/2004 05:23 PM
Please respond to anabell

 
        To:     <[EMAIL PROTECTED]>
        cc: 
        Subject:        [sqlite] Text(3)


> Firstly, how do I define a string table field with constraints on its 
size?
> For example Text(3), string of three characters.  Secondly, how is it
> enforced during updates?  Many thanks!

Sqlite will make you work a little to enforce contraints like this. If you 
really want to, here's how:

CREATE TABLE foo (a); -- we want a to be at most three characters long
CREATE TRIGGER foo_a_insert_constraint BEFORE INSERT ON foo
BEGIN
        SELECT RAISE(ABORT, "a is too long") WHERE length(NEW.a) > 3;
END;
CREATE TRIGGER foo_a_update_constraint BEFORE UPDATE OF a ON foo
BEGIN
        SELECT RAISE(ABORT, "a is too long") WHERE length(NEW.a) > 3;
END;

sqlite> INSERT INTO foo VALUES("abcd");
SQL error: a is too long
sqlite> INSERT INTO foo VALUES("abc");
sqlite>

Adjust table and column names, and string length to suit. See 
http://sqlite.org/lang.html#createtrigger for reference material. This 
approach can be taken to check a wide variety of constraints. If you can 
define a WHERE clause that can detect a problem, you can abort the 
offending operation using a couple of triggers.

Does anyone have a more succinct version of the above?

Benjamin.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to