x FOR y ในคำจำกัดความคอลัมน์ของ DB2 สร้างคำสั่งตาราง

นี่คือคำสั่ง DB2 create table:

CREATE TABLE SCHEMA_F.TABLE_A (
    LEAFDESCRIPTION FOR F7UY2 CHAR(10) CCSID 1141  NOT NULL WITH DEFAULT
    ...

LEAFDESCRIPTION FOR F7UY2 หมายถึงอะไรกันแน่?


person Bernhard    schedule 08.02.2016    source แหล่งที่มา


คำตอบ (1)


tl;dr

อนุญาตให้คุณระบุชื่อย่อที่สามารถใช้งานได้จากโปรแกรม RPG (เก่ากว่า) บน i และยูทิลิตี้ระบบบางตัว ในกรณีนี้ LeafDescription เป็นชื่อยาวที่ใช้งานได้จาก SQL และ F7UY2 ใช้งานได้ภายใน RPG ฯลฯ (และ SQL แต่มักจะนิยมใช้ชื่อยาวด้วยเหตุผลที่ชัดเจน)


เป็นส่วนหนึ่งของพฤติกรรมเฉพาะระบบที่มีอยู่ใน i.

ดูสิ i (iSeries, Systemi, AS/400) เริ่มต้นจากการเป็นเครื่องจักรที่แตกต่างกันมาก หลายสิบปีก่อน ก่อนที่ SQL จะเป็นสิ่งนั้นจริงๆ และในขณะนั้น ชื่อฟิลด์และตารางถูกจำกัดไว้ที่ประมาณ 6 อักขระ และโปรแกรมต่างๆ ก็เขียนขึ้นโดยคำนึงถึงสิ่งนี้

ตอนนี้ ย้อนกลับไปเมื่อ SQL มาถึง บน i นั้น DB2 SQL ได้รับการดัดแปลงเพิ่มเติม (ในลักษณะหนึ่ง) ที่ด้านบนของระบบไฟล์ที่มีอยู่ ซึ่งหมายความว่า เหนือสิ่งอื่นใด คุณสามารถค้นหาไฟล์ที่มีอยู่ของคุณด้วย SQL โดยไม่ต้อง สร้างหรือเติมไฟล์เหล่านั้นใหม่
น่าเสียดายที่มันยังหมายความว่าไฟล์เหล่านั้นติดอยู่กับชื่อดั้งเดิมที่เป็นความลับกึ่งหนึ่ง ส่วนหนึ่งเป็นเพราะคุณยังมี โปรแกรม ดั้งเดิมทั้งหมดด้วย หากคุณสร้าง (หรือสร้างใหม่ แล้วแต่กรณี) ตารางผ่าน SQL โปรแกรม RPG จะไม่สามารถอ้างอิงได้ สิ่งนี้ทำให้คุณสามารถระบุชื่อที่ สามารถ อ้างอิงได้ ซึ่งหมายความว่าคุณสามารถสลับไปใช้ตารางแบบ SQL ได้ (ซึ่งมีข้อดีเพิ่มเติมใหม่บางประการ) โดยไม่จำเป็นต้องเปลี่ยนโปรแกรมของคุณ แม้ว่าการจำกัดความยาวของชื่อจะถูกยกเลิกในเกม RPG เวอร์ชันล่าสุด แต่ความสามารถในการหลีกเลี่ยงการเปลี่ยนชื่อทุกอย่างในคราวเดียวก็เป็นประโยชน์

person Clockwork-Muse    schedule 08.02.2016
comment
อีกจุดหนึ่ง เป็นเรื่องปกติที่จะกำหนดชื่อย่อให้กับตารางใหม่ แม้ว่าคุณจะใช้ชื่อยาวทุกที่ก็ตาม มิฉะนั้นระบบจะมอบหมายให้ LEAFDESCRIPTION จะมีระบบสร้างชื่อย่อเป็น LEAFD00001 - person Charles; 09.02.2016