Hi guys,
so there is the two ways I made:
FIRST ONE:
==========
** Create a table wich will store the result of EXISTS,
CREATE TABLE _TAG_EXISTS_RESULT_( NAME, BOOL );
** The next query has to INSERT 'evil little sister' with BOOL to 1 in
_TAG_EXISTS_RESULT_ if 'evil little sister' is already present in TAGS,
INSERT INTO _TAG_EXISTS_RESULT_ ( NAME, BOOL )
SELECT 'evil little sister'
, EXISTS (SELECT 1 FROM TAGS WHERE NAME='evil little sister');
** Then I add 'evil little sister' if _TAG_EXISTS_RESULT_.BOOL = 0..
INSERT INTO TAGS (NAME, COUNT)
VALUES(
CASE ( SElECT BOOL FROM _TAG_EXISTS_RESULT_ ) WHEN 0
THEN ( SElECT NAME FROM _TAG_EXISTS_RESULT_ )
ELSE '$NOT_USED$'
END
, 0 );
** delete $NOT_USED$ if so,
DELETE FROM TAGS WHERE NAME='$NOT_USED$';
** Then, clear _TAG_EXISTS_RESULT_,
DELETE FROM _TAG_EXISTS_RESULT_;
SECOND ONE:
==========
** I made a compact version,
INSERT INTO TAGS (NAME, COUNT)
VALUES
(
CASE( SELECT EXISTS( SELECT 1 FROM TAGS WHERE NAME='evil little
sister' ) ) WHEN 0
THEN 'evil little sister'
ELSE '$NOT_USED$'
END
, 1
);
** delete $NOT_USED$ if so,
DELETE FROM TAGS WHERE NAME='$NOT_USED$';
comments are welcome.
Of course, as I wrote yesterday, if UNIQUE can help to do the job
faster, I'll go with it. But this problem show me I do not realy well
understand how I have to think when I write a SQL statement. In C you
can do something like,
IF (condition) THEN (doSomething) END
in SQL, it appears to me now, I can't think like this. So I have a
question what are the words (like SELECT/UPDATE/INSERT) allowed to
start a query ?
regards,
Nicolas J.