Принятие Вас знает PK этих двух строк, которые Вы хотите обновить... Это работает в SQL Server, не может выступить за другие продукты. SQL (предположен быть) атомарный на уровне оператора:
CREATE TABLE testing
(
cola int NOT NULL,
colb CHAR(1) NOT NULL
);
CREATE UNIQUE INDEX UIX_testing_a ON testing(colb);
INSERT INTO testing VALUES (1, 'b');
INSERT INTO testing VALUES (2, 'a');
SELECT * FROM testing;
UPDATE testing
SET colb = CASE cola WHEN 1 THEN 'a'
WHEN 2 THEN 'b'
END
WHERE cola IN (1,2);
SELECT * FROM testing;
, таким образом, Вы пойдете от:
cola colb
------------
1 b
2 a
к:
cola colb
------------
1 a
2 b
You could use a flex EOF rule to append a newline to the input:
<<EOF>> { static int once = 0; return once++ ? 0 : '\n' }
В вашем файле lex
#define yyterminate() return token::END
В вашем файле yacc
%token END 0 "end of file"