คำถามติดแท็ก dml

2
กระทำจำเป็นหลังจากการดำเนินการ DML ในฟังก์ชั่น / ขั้นตอนหรือไม่?
ฉันสงสัยว่าถ้าจำเป็นต้องเขียนคอมมิทหลังจากใส่ / ลบ / อัพเดทในฟังก์ชั่น / ขั้นตอนหรือไม่ ตัวอย่าง: create or replace function test_fun return number is begin delete from a; return 0; end; หรือขั้นตอน create or replace procedure aud_clear_pro as begin delete from a; end; มันจำเป็นต้องกระทำหลังจากลบ? ไม่เข้าใจสถานการณ์ต่อไปนี้: ถ้าฉันเรียก function / procedure จากหน้าต่าง SQL มันต้องยอมรับ แต่ หากฉันกำหนดเวลาฟังก์ชั่น / ขั้นตอนโดยใช้ dbms_scheduler และเรียกใช้งานคำสั่งลบจะถูกส่งโดยอัตโนมัติ …

1
วิธีตรวจสอบการเรียงของตารางใน PostgreSQL
ฉันต้องการสคริปต์ตรวจสอบการเปรียบเทียบที่ใช้ในตารางของฉันใน PostgreSQL แต่ googling สำหรับPostgresql detect collationทำงานได้ไม่ดีสำหรับฉันและเอกสารไม่ได้ทำให้การค้นหานี้ง่าย มีใครบอกฉันได้ไหมว่าฉันจะตรวจสอบเรื่องนี้อย่างไร

1
การทริกเกอร์การยิงแม้จะไม่ได้รับผลกระทบ
นี่เป็นคำถามทั่วไปมากกว่า แต่แรงจูงใจสำหรับคำถามนี้เป็นปัญหาที่ฉันประสบขณะใช้ SQL Server ฉันมีทริกเกอร์นี้แนบกับเหตุการณ์แทรกบนตารางที่มีตรรกะบางอย่างซึ่งเป็นผลข้างเคียงจะเพิ่มข้อผิดพลาดหากไม่มีแถวถูกแทรก เมื่อตรวจสอบเพิ่มเติมฉันพบว่ามีการยิงไกแม้จะไม่มีการแทรกแถว ภาษาที่ใช้ในMicrosoft Docs บนทริกเกอร์ DMLดูเหมือนจะขัดแย้งกับพฤติกรรมนี้: ทริกเกอร์ DML เป็นขั้นตอนการจัดเก็บชนิดพิเศษที่จะมีผลโดยอัตโนมัติเมื่อมีเหตุการณ์ DML เกิดขึ้นซึ่งมีผลต่อตารางหรือมุมมองที่กำหนดในทริกเกอร์ นี่เป็นพฤติกรรมเริ่มต้นใน DBMS หรือไม่ มีเหตุผลบางอย่างในการเริ่มต้นทริกเกอร์เมื่อไม่มีแถวที่ได้รับผลกระทบหรือไม่?

2
ทำไมคำสั่ง UPDATE SET REPLACE () จะจับคู่แถว แต่ไม่เปลี่ยนเลยและไม่มีคำเตือน?
ฉันกำลังค้นหาสตริงที่แน่นอนในเขตข้อมูลและต้องการแทนที่ด้วยสตริงใหม่ โดยเฉพาะฉันต้องการให้การอ้างอิงทั้งหมดไปยัง URL หนึ่งเปลี่ยนเป็น URL อื่น ฉันได้สร้างคำสั่ง SQL นี้ขึ้นและกำลังเรียกใช้งานที่mysql>พรอมต์ของ CentOS 5.5 โดยใช้ MySQL Community Server 5.1.54 update [table] set [field] = REPLACE([field],'%domain.com%','%domain.org%'); คำตอบคือ: Query OK, 0 rows affected (0.02 sec) Rows matched: 618 Changed: 0 Warnings: 0 ฉันจะติดตามสาเหตุที่ไม่มีการเปลี่ยนแปลงได้อย่างไร แก้ไข 1: ขอบคุณ Aaron Bertrand ฉันค้นพบว่าREPLACE()ไม่สามารถจัดการสัญลักษณ์แทนได้และฉันใช้ผิดทั้งหมด (คิดว่า: WHEREclause หายไป) นี่คือคำแถลงการปฏิรูปของฉัน: UPDATE [table] …
9 mysql  dml 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.