зеркало из
				https://github.com/iharh/notes.git
				synced 2025-10-31 05:36:08 +02:00 
			
		
		
		
	m
Этот коммит содержится в:
		
							родитель
							
								
									654c78cdd6
								
							
						
					
					
						Коммит
						ff40b05ebc
					
				
							
								
								
									
										61
									
								
								db/sql/postgres/feature/inserg-update.txt
									
									
									
									
									
										Обычный файл
									
								
							
							
						
						
									
										61
									
								
								db/sql/postgres/feature/inserg-update.txt
									
									
									
									
									
										Обычный файл
									
								
							| @ -0,0 +1,61 @@ | |||||||
|  | Обращение к предыдущим (OLD) и к текущим (NEW) значениям в предложении RETURNING в PostgreSQL 18. | ||||||
|  | 
 | ||||||
|  | Всем привет! | ||||||
|  | 
 | ||||||
|  | Помимо таких ключевых функций в PostgreSQL 18, как асинхронный ввод-вывод и поддержка UUIDv7, мы получили вот такое небольшое, но приятное улучшение. | ||||||
|  | 
 | ||||||
|  | В этой версии добавлена возможность обращаться как к предыдущим (OLD), так и к текущим (NEW) значениям в предложении RETURNING для команд INSERT, UPDATE, DELETE и MERGE. Суть в том, что теперь доступны два синонима OLD и NEW, с помощью которых мы можем возвращать старые и новые значения в предложении RETURNING. | ||||||
|  | 
 | ||||||
|  | Это не революционное изменение, как асинхронный ввод-вывод, но это одна из тех небольших функций, которая оказывается просто неоценимой в определённых ситуациях. | ||||||
|  | 
 | ||||||
|  | Простая демонстрация с UPDATE для получения всех старых и новых значений: | ||||||
|  | 
 | ||||||
|  | UPDATE fruit | ||||||
|  | SET quantity = 300 | ||||||
|  | WHERE item = 'Apples' | ||||||
|  | RETURNING OLD.*, NEW.*; | ||||||
|  | 
 | ||||||
|  | Вывод: | ||||||
|  | 
 | ||||||
|  | id|item|quantity|id|item|quantity | ||||||
|  | ——+—-——+————————+——+———+—————— | ||||||
|  | 5|Apples| 200  |  5| Apples |300 | ||||||
|  | (1 row) | ||||||
|  | 
 | ||||||
|  | Получается очень просто, удобно и наглядно! Все как мы любим! ☺️ | ||||||
|  | 
 | ||||||
|  | Вот еще пример. | ||||||
|  | 
 | ||||||
|  | Допустим, мы выполняем операцию UPSERT (INSERT ... ON CONFLICT ... DO UPDATE) и хотим определить, была ли строка, возвращённая RETURNING, новой вставленной строкой или существующей обновлённой строкой. Это было возможно и раньше, но полагалось на неинтуитивную проверку xmax = 0: | ||||||
|  | 
 | ||||||
|  | INSERT INTO webhook ( | ||||||
|  |     id, | ||||||
|  |     data | ||||||
|  | ) VALUES ( | ||||||
|  |     @id, | ||||||
|  |     @data | ||||||
|  | ) | ||||||
|  | ON CONFLICT (id) | ||||||
|  |     DO UPDATE SET id = webhook.id | ||||||
|  | RETURNING webhook.*, | ||||||
|  |     (xmax = 0) AS is_new; | ||||||
|  | 
 | ||||||
|  | Этот оператор полагается на то, что xmax устанавливается в ноль для новой вставки, что является особенностью реализации блокировок в PostgreSQL. Это работает, но не является гарантированной частью API и потенциально может измениться в любой момент. | ||||||
|  | 
 | ||||||
|  | В PostgreSQL 18 мы можем переписать приведённый выше код так, чтобы он был более понятным и не зависел от деталей реализации. Это также просто - достаточно проверить, является ли OLD значением NULL в предложении RETURNING: | ||||||
|  | 
 | ||||||
|  | INSERT INTO webhook ( | ||||||
|  |     id, | ||||||
|  |     data | ||||||
|  | ) VALUES ( | ||||||
|  |     @id, | ||||||
|  |     @data | ||||||
|  | ) | ||||||
|  | ON CONFLICT (id) | ||||||
|  |     DO UPDATE SET id = webhook.id | ||||||
|  | RETURNING webhook.*, | ||||||
|  |     (OLD IS NULL)::boolean AS is_new; | ||||||
|  | 
 | ||||||
|  | Доступ к OLD и NEW, без сомнения, найдёт множество других полезных применений, но этот пример позволяет нам сразу же улучшить код, написанный до 18-й версии. | ||||||
|  | 
 | ||||||
|  | Переходим на PostgreSQL 18 и пользуемся! | ||||||
| @ -29,6 +29,8 @@ Petkus | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 2025 | 2025 | ||||||
|  | Duel - Manucharov - Hazin of 54:43 | ||||||
|  |     https://www.youtube.com/watch?v=oLKtrNw2oeg | ||||||
| AlexeyMamontov - Hazin - Trump Won FRS of 43:36 | AlexeyMamontov - Hazin - Trump Won FRS of 43:36 | ||||||
|     https://www.youtube.com/watch?v=YLttyoh4okA |     https://www.youtube.com/watch?v=YLttyoh4okA | ||||||
| RadioSputnik - Manucharov - Duel 28:00 of 54:43 | RadioSputnik - Manucharov - Duel 28:00 of 54:43 | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| 2025 | 2025 | ||||||
| USSRHistoryShadows - Bokiy 9:00 of 58:20 | USSRHistoryShadows - Bokiy 11:00 of 58:20 | ||||||
|     https://www.youtube.com/watch?v=ZPjmuaqW3So |     https://www.youtube.com/watch?v=ZPjmuaqW3So | ||||||
|     ! 06:00 - Dvoryanin |     ! 06:00 - Dvoryanin | ||||||
|     ! 08:00 - Nastavnik - Pavel Makievskiy |     ! 08:00 - Nastavnik - Pavel Makievskiy | ||||||
|  | |||||||
| @ -29,6 +29,8 @@ people | |||||||
|     ! his students - S.S Averintsev, V Bibihin |     ! his students - S.S Averintsev, V Bibihin | ||||||
| 
 | 
 | ||||||
| 2025 | 2025 | ||||||
|  | Mazhuko - Accept Suffering of 12:09 | ||||||
|  |     https://www.youtube.com/watch?v=K1wijzldxC8 | ||||||
| Mazhuko - Curse of Mother of 11:18 | Mazhuko - Curse of Mother of 11:18 | ||||||
|     https://www.youtube.com/watch?v=tyO3okqb8G4 |     https://www.youtube.com/watch?v=tyO3okqb8G4 | ||||||
| Mazhuko - Holly Culinar of 18:23 | Mazhuko - Holly Culinar of 18:23 | ||||||
|  | |||||||
| @ -152,6 +152,9 @@ Seminar - Rest House 23.03.2017 of p7 | |||||||
|     https://www.youtube.com/playlist?list=PLflQtqFMbdFPBQDZNz8GutPFsc8HnLTHO |     https://www.youtube.com/playlist?list=PLflQtqFMbdFPBQDZNz8GutPFsc8HnLTHO | ||||||
|     Irina - 03.25.2017 - Miroustroitelnye Osnovy Roda 0:00 of 1:45:37 |     Irina - 03.25.2017 - Miroustroitelnye Osnovy Roda 0:00 of 1:45:37 | ||||||
|         https://www.youtube.com/watch?v=IIwzdk7nx8Y |         https://www.youtube.com/watch?v=IIwzdk7nx8Y | ||||||
|  |         ! 05:30 - Ideally Svaha podbiraet nevest pod zadachu, kotoruyu stavit rod svoemu synu i roda sgovarivayutsya | ||||||
|  |         !         Sgovor 2-h rodov kotorye dayut dobro na sovmestnuyu zhizn molodyh | ||||||
|  |         !         Inache zhenschina prihodit tuda, gde eyo ne zhdut | ||||||
|     Intro - Politinfo of 17:44 |     Intro - Politinfo of 17:44 | ||||||
|         https://www.youtube.com/watch?v=Ph__IhLyuAs |         https://www.youtube.com/watch?v=Ph__IhLyuAs | ||||||
|         ! Svyazka 3-h sil !!! |         ! Svyazka 3-h sil !!! | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| 03.01 2020-10-10 - Rode - Language of Elites 46:00 of 1:44:45 | 03.01 2020-10-10 - Rode - Language of Elites 1:04:00 of 1:44:45 | ||||||
|     ! 03:00 Alexey Nikolaevich - not a descendant |     ! 03:00 Alexey Nikolaevich - not a descendant | ||||||
|     !       Dmitry Palych (killed Rasputin) - dublyor |     !       Dmitry Palych (killed Rasputin) - dublyor | ||||||
|     !       Mihail ... morganoticheskiy brak |     !       Mihail ... morganoticheskiy brak | ||||||
| @ -68,7 +68,8 @@ | |||||||
|     37:00 Myod (honey) - money, ulii (soviet system: zavody, fabriki, accii), bees/pchyoly (literature: voyna i mir, mertvye dushi, skolko lyudey na vas rabotayut) |     37:00 Myod (honey) - money, ulii (soviet system: zavody, fabriki, accii), bees/pchyoly (literature: voyna i mir, mertvye dushi, skolko lyudey na vas rabotayut) | ||||||
| 
 | 
 | ||||||
| 01.1 2020-07-03 - Rode 1 of 1:12:38 | 01.1 2020-07-03 - Rode 1 of 1:12:38 | ||||||
|     Vayno Anton Eduardovich - dissertation |     Vayno Anton Eduardovich - dissertation (with Kobyakov, Saraiv - Image of Victory) | ||||||
|  |         https://drive.google.com/file/d/1RrmlE6EBFhEIYDuGVi6ArapP_4uRwz53/view | ||||||
|         https://ru.wikipedia.org/wiki/%D0%92%D0%B0%D0%B9%D0%BD%D0%BE,_%D0%90%D0%BD%D1%82%D0%BE%D0%BD_%D0%AD%D0%B4%D1%83%D0%B0%D1%80%D0%B4%D0%BE%D0%B2%D0%B8%D1%87 |         https://ru.wikipedia.org/wiki/%D0%92%D0%B0%D0%B9%D0%BD%D0%BE,_%D0%90%D0%BD%D1%82%D0%BE%D0%BD_%D0%AD%D0%B4%D1%83%D0%B0%D1%80%D0%B4%D0%BE%D0%B2%D0%B8%D1%87 | ||||||
|         notion of superclass |         notion of superclass | ||||||
|         https://search.rsl.ru/ru/record/01005049616 |         https://search.rsl.ru/ru/record/01005049616 | ||||||
|  | |||||||
| @ -14,6 +14,8 @@ https://www.baeldung.com/java-liquibase-list-sql-types | |||||||
| https://www.baeldung.com/java-postgresql-create-schema-before-liquibase | https://www.baeldung.com/java-postgresql-create-schema-before-liquibase | ||||||
| 
 | 
 | ||||||
| 2025 | 2025 | ||||||
|  | MihailKiselyov - Liquibase Quick Start 0:00 of 28:00 | ||||||
|  |     https://www.youtube.com/watch?v=_c9Eo1heLjg | ||||||
| https://bell-sw.com/blog/how-to-use-liquibase-with-spring-boot/ | https://bell-sw.com/blog/how-to-use-liquibase-with-spring-boot/ | ||||||
|     https://www.youtube.com/watch?v=a1vGvdYKP2Y |     https://www.youtube.com/watch?v=a1vGvdYKP2Y | ||||||
|     https://github.com/code-with-bellsoft/liquibase-demo |     https://github.com/code-with-bellsoft/liquibase-demo | ||||||
|  | |||||||
| @ -1,4 +1,6 @@ | |||||||
| 2024 | 2024 | ||||||
|  | MihailKiselyov - Testcontainers 0:00 of 15:38 | ||||||
|  |     https://www.youtube.com/watch?v=bB5TR_xdJ94 | ||||||
| Jacov - Testcontainers best practices. Anna Chernysheva, Docker (JAVA ON 2024) 0:00 of 1:06:26 | Jacov - Testcontainers best practices. Anna Chernysheva, Docker (JAVA ON 2024) 0:00 of 1:06:26 | ||||||
|     https://www.youtube.com/watch?v=BV2D5HrUv0A |     https://www.youtube.com/watch?v=BV2D5HrUv0A | ||||||
| Javapro - Making Your Testcontainers Experience Smoother | Piotr Przybyl (EN) 0:00 of 47:52 | Javapro - Making Your Testcontainers Experience Smoother | Piotr Przybyl (EN) 0:00 of 47:52 | ||||||
|  | |||||||
		Загрузка…
	
	
			
			x
			
			
		
	
		Ссылка в новой задаче
	
	Block a user
	 ihar_hancharenka
						ihar_hancharenka