คำถามติดแท็ก postgresql-9.5

15
Postgresql - ไม่สามารถวางฐานข้อมูลเนื่องจากการเชื่อมต่ออัตโนมัติกับฐานข้อมูล
เมื่อใดก็ตามที่ฉันพยายามจะทิ้งฐานข้อมูลฉันจะได้รับ: ERROR: database "pilot" is being accessed by other users DETAIL: There is 1 other session using the database. เมื่อฉันใช้: SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'TARGET_DB'; ฉันยุติการเชื่อมต่อจากฐานข้อมูลนั้น แต่ถ้าฉันพยายามที่จะวางฐานข้อมูลหลังจากนั้นบางคนเชื่อมต่อกับฐานข้อมูลนั้นโดยอัตโนมัติและให้ข้อผิดพลาดนี้ สิ่งที่จะทำเช่นนั้น? ไม่มีใครใช้ฐานข้อมูลนี้ยกเว้นฉัน

1
PostgreSQL INSERT ON CONFLICT UPDATE (upsert) ใช้ค่าที่ยกเว้นทั้งหมด
เมื่อคุณเพิ่มแถว (PostgreSQL> = 9.5) และคุณต้องการให้ INSERT ที่เป็นไปได้ตรงกับการอัปเดตที่เป็นไปได้คุณสามารถเขียนได้ดังนี้: INSERT INTO tablename (id, username, password, level, email) VALUES (1, 'John', 'qwerty', 5, 'john@mail.com') ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id, username=EXCLUDED.username, password=EXCLUDED.password, level=EXCLUDED.level,email=EXCLUDED.email มีวิธีที่สั้นกว่านี้ไหม? เพื่อบอกว่า: ใช้ค่า EXCLUDE ทั้งหมด ใน SQLite ฉันเคยทำ: INSERT OR REPLACE INTO tablename (id, user, password, level, email) VALUES …

9
ใช้หลายเป้าหมายข้อขัดแย้งในคำสั่ง ON CONFLICT
ฉันมีสองคอลัมน์ในตารางcol1, col2พวกเขาทั้งสองจะไม่ซ้ำกันจัดทำดัชนี (col1 จะไม่ซ้ำกันและเพื่อให้เป็น col2) ฉันต้องการที่จะแทรกลงในตารางนี้ใช้ON CONFLICTไวยากรณ์และอัปเดตคอลัมน์อื่น ๆ แต่ฉันไม่สามารถใช้ทั้งสองคอลัมน์ในconflict_targetประโยคได้ มันได้ผล: INSERT INTO table ... ON CONFLICT ( col1 ) DO UPDATE SET -- update needed columns here แต่จะทำอย่างไรกับหลายคอลัมน์เช่นนี้: ... ON CONFLICT ( col1, col2 ) DO UPDATE SET ....
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.