|
Тема |
sql trigger & transaction |
|
Автор | Йopдaн (Нерегистриран) | |
Публикувано | 21.11.05 23:56 |
|
|
В момента работя с MySQL, но въпроса ми е принципен. Предпочитам да не използвам специфични особености на отделен SQL сървър.
По редица причини трябва аз да генерирам ключа на таблицата.
1. Дали тригера, който е най-долу ще работи както трябва. Т.е. дали има някаква атомарност и ще се изпълни все едно има изолация SERIALIZABLE?
2. Ако не -- може ли по някакъв друг начин да стане с тригер?
3. Ако и това не -- предполагам, че ще трябва да забраня INSERT в таблицата и да създам отделна процедура, която да INSERT-ва.
CREATE TRIGGER `ins_document` BEFORE INSERT ON `document` FOR EACH ROW
BEGIN
SELECT Max(Id) INTO @AId FROM document;
IF IsNull(@AId) THEN
SET @AId=1;
ELSE
SET @AId=@AId+1;
END IF;
SET NEW.Id = @AId;
END
|
| |
|
|
|