Insert wypełniający wartośc drugiego pola zmieniona wartością pierwszego

0

Załóżmy że ma tabelę z dwiema kolumnami. Pierwsza to klucz numer_1 druga to wartość_1 . Klucz to liczba z ustawionym Autoincrement. Czy można napisać jeden Insert (żeby nie tworzyć dwóch operacji transakcji i commitowania) który tworząc nowy rekord da radę w polu wartość_1 wpisać liczbę pobraną ze stworzonego właśnie pola numer_1 + 100 ?

0

Możesz robić w insercie select MAX() z już istniejących rekordów i dodać 101.

0

@Xiuthechutli pytaczowi chodzi o coś innego. Nie da się tak zrobić ponieważ wartość autoincrement jest znana dopiero w momencie zapisywania rekordu do bazy i tutaj Max() będzie niepoprawne bo nie weźmie pod uwagę wartości, która właśnie ma być wstawiona. Z drugiej strony nie możesz też próbować wstawić wartości LAST_INSERT_ID + 1 + 100 bo pomiędzy odczytaniem LAST_INSERT_ID a wstawieniem Twojego rekordu do bazy ktoś może wstawić inny rekord

0

No właśnie, chodzi o to aby jakaś druga operacja insertu w innym wątku nie spowodowała zakłócenia numeracji pola wartość_1. A czy jest jakiś insert który po wstawieniu rekordu zwróci mi jako wynik wstawienia wartość pola klucza (czyli pola numer_1) dla wstawionego rekordu? No bo ponowne czytanie z tabeli może być błędne jeżeli w miedzy czasie ktoś inny dopisze dodatkowy rekord do tej tabeli. A jak będę miał klucz PK to w drugiej operacji już poprawie sobie pole wartość_1 do stanu który powinien być.

0

LAST_INSERT_ID jest tym czego szukasz - tylko najpierw przeczytaj co to robi zanim zadasz następne pytanie

0

Dzięki, przetestuje to.

0

a może o to chodzi pytającemu "MS SQL insert return value"
INSERT INTO table (name)
OUTPUT Inserted.ID
VALUES('bob');

0
antyvirus napisał(a):

a może o to chodzi pytającemu "MS SQL insert return value"
INSERT INTO table (name)
OUTPUT Inserted.ID
VALUES('bob');

a może byś najpierw zobaczył o jaką bazę chodzi...

0

ups pomyłka "my sql insert return value"
wujek goo od razu podpowiada http://stackoverflow.com/questions/1488237/php-mysql-insert-return-value-with-one-query-execution

1 użytkowników online, w tym zalogowanych: 0, gości: 1