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

ภาษานิยามข้อมูล การกำหนดโครงสร้างฐานข้อมูล แต่ไม่ใช่เนื้อหา

2
วิธีที่ดีที่สุดในการเติมคอลัมน์ใหม่ในตารางขนาดใหญ่?
เรามีตาราง 2.2 GB ใน Postgres ที่มี 7,801,611 แถว เรากำลังเพิ่มคอลัมน์ uuid / guid ลงไปและฉันสงสัยว่าวิธีที่ดีที่สุดในการเติมข้อมูลคอลัมน์นั้นคืออะไร (ตามที่เราต้องการเพิ่มNOT NULLข้อ จำกัด ) หากฉันเข้าใจ Postgres อย่างถูกต้องการอัปเดตเป็นเทคนิคลบและแทรกดังนั้นนี่คือการสร้างตาราง 2.2 gb ใหม่ทั้งหมด นอกจากนี้เรายังมีทาสวิ่งอยู่ดังนั้นเราจึงไม่ต้องการให้มันล้าหลัง มีวิธีใดที่ดีไปกว่าการเขียนสคริปต์ที่ค่อยๆเติมมันลงไปตามกาลเวลา?

2
ฉันจะวางข้อ จำกัด ทั้งหมดจากตารางทั้งหมดได้อย่างไร
ฉันต้องการปล่อยข้อ จำกัด เริ่มต้นทั้งหมดตรวจสอบข้อ จำกัด ข้อ จำกัด เฉพาะคีย์หลักและคีย์ต่างประเทศจากตารางทั้งหมดในฐานข้อมูล SQL Server ฉันรู้วิธีรับชื่อข้อ จำกัด ทั้งหมดsys.objectsแต่ฉันจะเติมALTER TABLEส่วนได้อย่างไร

2
ความแตกต่างระหว่าง MATCH FULL, MATCH SIMPLE และ MATCH PARTIAL?
ฉันสังเกตเห็นMATCH SIMPLEและMATCH FULLแต่ฉันไม่เข้าใจสิ่งที่พวกเขาทำ ฉันเห็นค่าเริ่มต้นคือMATCH SIMPLE; แต่MATCHข้ออื่น ๆในFOREIGN KEYฟังก์ชันข้อ จำกัด ได้อย่างไร

2
เวิร์กโฟลว์ DDL ของทรานแซคชันสำหรับ MySQL
ฉันเป็นเพียงเล็กน้อยประหลาดใจที่จะพบว่างบ DDL ( alter table, create indexฯลฯ ) โดยปริยายกระทำการทำธุรกรรมในปัจจุบันใน MySQL มาจาก MS SQL Server ความสามารถในการปรับเปลี่ยนฐานข้อมูลในการทำธุรกรรมภายใน (ที่ถูกย้อนกลับ) เป็นส่วนสำคัญของเวิร์กโฟลว์ของฉัน สำหรับการรวมอย่างต่อเนื่องการย้อนกลับถูกใช้ถ้าการโยกย้าย hiccuped ด้วยเหตุผลใด ๆ ดังนั้นอย่างน้อยเราก็ไม่ได้ออกจากฐานข้อมูลในสถานะครึ่งย้าย ผู้คนแก้ไขปัญหาทั้งสองนี้อย่างไรเมื่อใช้ MySQL กับการย้ายข้อมูลและการรวมอย่างต่อเนื่อง

3
ข้อ จำกัด ในการบังคับใช้“ อย่างน้อยหนึ่ง” หรือ“ หนึ่งอย่าง” ในฐานข้อมูล
สมมติว่าเรามีผู้ใช้และผู้ใช้แต่ละคนสามารถมีที่อยู่อีเมลได้หลายที่อยู่ CREATE TABLE emails ( user_id integer, email_address text, is_active boolean ) แถวตัวอย่างบางส่วน user_id | email_address | is_active 1 | foo@bar.com | t 1 | baz@bar.com | f 1 | bar@foo.com | f 2 | ccc@ddd.com | t ฉันต้องการบังคับใช้ข้อ จำกัด ที่ผู้ใช้ทุกคนมีที่อยู่หนึ่งที่แน่นอน ฉันจะทำสิ่งนี้ใน Postgres ได้อย่างไร ฉันสามารถทำสิ่งนี้: CREATE UNIQUE INDEX "user_email" ON …

4
ทำไม DBMS บางอันไม่อนุญาตให้มีการย้อนกลับสำหรับคำสั่ง DDL
เมื่อเร็ว ๆ นี้ฉันพบว่า MySQL ไม่สนับสนุนการย้อนกลับของ DDL เช่น "แก้ไขตาราง" ... เคยชินกับ PostgreSQL ที่ทำให้ฉันแปลก แต่เพื่อนของฉันบอกฉันว่าแม้แต่ Oracle ก็ไม่ยอม .. มีเหตุผลทางเทคนิคหรือไม่ที่ไม่สนับสนุน มันเป็นเพียงคุณสมบัติ "ไม่น่าสนใจ" สำหรับพวกเขา? แก้ไข: เพิ่งพบการเปรียบเทียบนี้ ดูเหมือนว่ามี DBMSes หลายอย่างที่ทำสนับสนุน DDL การทำธุรกรรม

1
วิธีใช้ธุรกรรมกับ SQL Server DDL
ฉันมีตารางเข้าสู่ระบบที่แทรกทั้งหมดจะทำโดยขั้นตอนการจัดเก็บเดียว CREATE TABLE dbo.LogTable( LogRefnr int IDENTITY(1, 1) NOT NULL, LogQuery varchar(255) NOT NULL, LogTime datetime NOT NULL, logQueryDuration int NULL, LogSessionID int NULL, CONSTRAINT PK_Log PRIMARY KEY CLUSTERED (LogRefnr) ) go Create procedure DBO.LogInsert ( @Query varchar(255), @time datetime, @duration int, @SessinID int) as begin Insert into LogTable ( …

6
แบบสอบถามเพื่อเปรียบเทียบโครงสร้างของสองตารางใน MySQL
เพื่อให้กระบวนการสำรองข้อมูลของฐานข้อมูล MySQL ของฉันเป็นแบบอัตโนมัติฉันต้องการเปรียบเทียบโครงสร้างของสองตาราง (เวอร์ชันปัจจุบันเทียบกับเวอร์ชันเก่า) คุณนึกถึงการสืบค้นที่สามารถเปรียบเทียบสองตารางได้หรือไม่ นี่คือตัวอย่างตารางที่คุณสามารถเปรียบเทียบได้ CREATE TABLE product_today ( pname VARCHAR(150), price int, PRIMARY KEY (pname) ); CREATE TABLE product_yesterday ( pname VARCHAR(150), price int, PRIMARY KEY (pname) ); CREATE TABLE product_2days_back ( pname VARCHAR(15), price int, PRIMARY KEY (pname) ); สองตารางแรกมีโครงสร้างเหมือนกัน อันสุดท้ายแตกต่างกัน ฉันแค่ต้องรู้ว่าสองตารางมีโครงสร้างต่างกันหรือไม่ ฉันไม่สนใจว่ามันแตกต่างกันอย่างไร

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

2
ปิดใช้งานการตรวจสอบ Schema On Function / Stored Procedure
ฉันพยายามทำให้กระบวนการที่ดำเนินการเปลี่ยนแปลงกับฐานข้อมูล SQL Server 2008 R2 เป็นไปโดยอัตโนมัติ กระบวนการที่ฉันวางไว้และสร้างโพรซีเดอร์และฟังก์ชันที่เก็บไว้ของฉันใหม่รวมถึงเรียกใช้สคริปต์เพื่อเปลี่ยนตาราง / คอลัมน์ / ข้อมูล น่าเสียดายที่สคริปต์ตัวใดตัวหนึ่งต้องใช้ฟังก์ชันใดฟังก์ชันหนึ่งก่อน แต่ฉันไม่สามารถเรียกใช้การเปลี่ยนแปลง proc / ฟังก์ชั่นที่เก็บไว้ได้ทั้งหมดเพราะมันอาศัยคอลัมน์ที่เพิ่มเข้ามาจากสคริปต์การเปลี่ยนแปลงตาราง / คอลัมน์ / ข้อมูลก่อน ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะเรียกใช้โพรซีเดอร์และฟังก์ชันที่เก็บไว้โดยไม่มี SQL Server ตรวจสอบคอลัมน์ที่ใช้ในการกำหนดฟังก์ชัน / SP? ฉันพยายามค้นหา แต่ไม่พบเงื่อนไขหรือคำสั่งเพื่อเปิดใช้งานสิ่งนี้

3
ทำไมฉันถึงชอบ ALGORITHM = COPY ถึง ALGORITHM = INPLACE
ตั้งแต่ MySQL 5.6 แนะนำ DDL ออนไลน์ALTER TABLEคำสั่งสามารถเลือกที่จะมีALGORITHM=INPLACEหรือALGORITHM=COPYระบุก็ได้ ภาพรวมของ DDL ออนไลน์หมายเหตุที่โดยปกติINPLACEจะใช้ที่ใดก็ตามที่เป็นไปได้และหมายถึง (โดยที่ไม่เคยระบุว่าค่อนข้าง) ว่าINPLACEอัลกอริทึมที่มีราคาถูกกว่าCOPYหนึ่งคือ ดังนั้นฉันจะต้องระบุเหตุผลอะไรALGORITHM=COPYในALTER TABLEแถลงการณ์?

1
ทำไมการเพิ่มคอลัมน์ NOT NULL ด้วยข้อ จำกัด เริ่มต้นทันที?
CREATE TABLE TestTab (ID INT IDENTITY(1,1), st nvarchar(100)) INSERT INTO TestTab (st) values ('a') INSERT INTO TestTab (st) values ('b') INSERT INTO TestTab (st) values ('c') INSERT INTO TestTab (st) values ('d') INSERT INTO TestTab (st) values ('e') INSERT INTO TestTab (st) SELECT TOP 10000 st from testtab GO 30 …

3
รีเซ็ตค่าตัวตน
ฉันมีตารางที่มีคอลัมน์ประจำตัว ในขณะที่กำลังพัฒนาฉันจะลบแถวเป็นครั้งคราวและเพิ่มอีกครั้ง แต่ค่าตัวตนต่าง ๆ เพิ่มขึ้นเรื่อย ๆ และไม่ได้เริ่มต้นจาก 1 เมื่อฉันเพิ่มพวกเขาอีกครั้ง ตอนนี้รหัสของฉันไปจาก 68 -> 92 และนี่ทำให้รหัสของฉันล่ม ฉันจะรีเซ็ตค่าตัวตนได้อย่างไร

2
เหตุใดจึงตัด DDL
ฉันมีคำถามสัมภาษณ์ซึ่งถูกถามระหว่างการสัมภาษณ์ ฉันตอบคำถาม แต่ผู้สัมภาษณ์ไม่เชื่อมั่นกับคำตอบของฉัน ดังนั้นทุกคนโปรดแก้ไขฉันด้วยความเข้าใจของฉัน Q. ทำไม Truncate เป็น DDL ที่ไหนในขณะที่ Delete เป็น DML ทั้งสองทำงานเกือบเหมือนกัน (ลบแถว) Ans เมื่อเราใช้ Truncate เราจะยกเลิกการจัดสรรพื้นที่ทั้งหมดที่จัดสรรโดยข้อมูลโดยไม่บันทึกลงใน undo-table-space แต่ในกรณีของการลบเราจะใส่ข้อมูลทั้งหมดในเลิกทำพื้นที่ตารางแล้วเราจะลบข้อมูลทั้งหมด กรุณาถ้าใครรู้คำตอบที่ดีที่สุดสำหรับข้างต้นโปรดอธิบาย
15 oracle  delete  ddl  truncate 

3
สคริปท์ Oracle DDL ในรูปแบบอัตโนมัติ
นักพัฒนา Oracle SQL สามารถส่งออก DDL ผ่านทางTools -> Database Export...นี้ทำงานได้ดีมาก แต่ต้องการการแทรกแซงด้วยตนเอง ฉันรู้DBMS_METADATA.get_ddl()แต่พบว่าการส่งออกไม่สมบูรณ์ ฉันพบปัญหาที่DBMS_METADATADDL ที่ส่งออกไม่สามารถใช้งานได้โดยไม่ต้องแก้ไขปัญหาเช่นแบ่งในช่วงกลางของคำหลักและแย่กว่านั้น อย่างไรก็ตามหากใครรู้วิธีการส่งออก DDL ผ่านDMBS_METADATAสิ่งที่สามารถทำงานได้โดยไม่ต้องแก้ไขด้วยตนเองนั่นก็เป็นทางออกที่ดีเช่นกัน โดยทั่วไปฉันกำลังมองหาวิธีอัตโนมัติ / สคริปต์เพื่อส่งออก DDL เหมือนกับสิ่งที่ส่งออกผ่านทางคู่มือ ฉันจะทำสิ่งนั้นได้อย่างไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.