Are you looking for "NOT NULL DEFAULT 0"?
-----Urspr?ngliche Nachricht-----
Von: Will Parsons [mailto:varro at nodomain.invalid]
Gesendet: Freitag, 21. August 2015 04:47
An: sqlite-users at mailinglists.sqlite.org
Betreff: [sqlite] design problem involving trigger
I'm working on a program that involves a catalogue of books. Part of the
database schema looks like this:
create table Books(id integer primary key,
title text collate nocase not null,
author references Authors(id),
...
unique(title, author));
create table Authors(id integer primary key,
name text unique not null check(name <> ''));
The idea here is that the title+author of a book must be unique, but a book may
not necessarily have an author associated with it. But, the schema fragment as
I have presented it does not disallow entering the same title with a null
author multiple times, which is clearly undesirable.
In thinking about how to avoid this, one possibility that has occurred to me is
to add an entry to the Authors table with id=0, name=NULL, and to modify the
Books table to be:
create table Books(id integer primary key,
title text collate nocase not null,
author references Authors(id) not null,
...
unique(title, author));
With this, entries in the Books table that presently have the author field set
to NUll would instead have author=0.
What I would like to have is a trigger that when an attempt is made to enter a
new record into the Books table with a NULL author field, is to force the
author field to 0 instead. I can't see how to do this with a "before insert"
trigger, though. Perhaps I'm approaching this the wrong way; in any case I'd
appreciate advice.
--
Will
_______________________________________________
sqlite-users mailing list
sqlite-users at mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
___________________________________________
Gunter Hick
Software Engineer
Scientific Games International GmbH
FN 157284 a, HG Wien
Klitschgasse 2-4, A-1130 Vienna, Austria
Tel: +43 1 80100 0
E-Mail: hick at scigames.at
This communication (including any attachments) is intended for the use of the
intended recipient(s) only and may contain information that is confidential,
privileged or legally protected. Any unauthorized use or dissemination of this
communication is strictly prohibited. If you have received this communication
in error, please immediately notify the sender by return e-mail message and
delete all copies of the original communication. Thank you for your cooperation.