মাইএসকিউএল - স্বয়ংক্রিয়ভাবে একটি ইউইউডিতে রাখার জন্য টেবিলটি পরিবর্তন করুন


14

ঠিক আছে, আমি জানি আমি এটি আগেও করেছি। তবে আমার জীবনের জন্য আমি তা বুঝতে পারি না। আমি একটি টেবিল তৈরি করেছি। কলামগুলির মধ্যে একটিতে "লগআইডি" লেবেল রয়েছে এটি প্রাথমিক কী is

আমি কীভাবে এটি পরিবর্তন করব যাতে এই কলামটি প্রতিটি নতুন প্রবেশের জন্য একটি ইউইউডি উত্পন্ন করে?

ধন্যবাদ

উত্তর:


17

প্রদত্ত কলামটির জন্য ইউআইডি উত্পন্ন করার জন্য সন্নিবেশ করার আগে চালানোর জন্য কেবল একটি ট্রিগার তৈরি করুন।

CREATE TRIGGER before_insert_mytable
  BEFORE INSERT ON mytable
  FOR EACH ROW
  SET new.LogID = uuid();

3

UUID () অভিব্যক্তি একটি UUID যখন বলা জেনারেট করে।

দুর্ভাগ্যক্রমে (এএফআইকি যাইহোক) মাইএসকিউএল কোনও ক্ষেত্রের জন্য ডিফল্ট মান হিসাবে এক্সপ্রেশনগুলিকে অনুমতি দেবে না। চারপাশের কাজ হিসাবে, আপনি সর্বদা ক্ষেত্রটি ডিফল্ট নালতে সেট করতে পারেন এবং একটি ট্রিগার থাকতে পারে যা সন্নিবেশের একটি ইউইউডি দিয়ে ক্ষেত্রটিকে আপডেট করে।


2

আমি সত্যিই নিশ্চিত যে আপনি এখনও পারবেন না । আমি কোনও ইউআইডিকে প্রাথমিক কী হিসাবে ব্যবহার না করে এর পরিবর্তে স্লিমার, সুন্দর ডেটা জাতীয় ধরণের ব্যবহার হিসাবে গুরুত্ব সহকারে বিবেচনা করব INT। আপনি আপনার ইউআইডি পৃথক কলাম হিসাবে যুক্ত করতে পারেন এবং এটির মাধ্যমে এটি আপডেট করতে TRIGGERপারেন, যদি এটি আপনার পক্ষে উপযুক্ত হয়।


আপনার ডাটাবেস জুড়ে অনন্য হতে রেকর্ডগুলির প্রয়োজন হলে পূর্ণসংখ্যাগুলি ভেঙে যায়।
Cfreak

1
আমি সন্দেহ করতে পারি যে প্রয়োজনীয়তাগুলি যদি সেই স্তরে ইঞ্জিন স্টোরেজ প্যাটার্নটি নির্দেশ করে তবে একটি বৃহত্তর মডেল ডিজাইন বা নির্বাচিত সরঞ্জাম ইস্যু রয়েছে। পৃথক কলাম হিসাবে ইউআইডি থাকা আসলে এই ক্ষেত্রে উভয় বিশ্ব সমাধানের সেরা।
আওয়ার্কেক্স

ইউইউডি একবার মানুষের জন্য ফর্ম্যাট হয়ে যায়। আপনি যদি কোনও ইউইউডিটিকে প্রাথমিক কী হিসাবে ব্যবহার করতে চান তবে ড্যাশগুলি স্ট্রিপ করুন এবং আনহেক্স করুন। আপনার যদি মানুষের ফর্ম্যাট সংস্করণ প্রয়োজন হয় তবে আপনি টেবিলে একটি উত্পন্ন কলাম যুক্ত করতে পারেন। SELECT LENGTH(UNHEX(REPLACE(UUID(),'-','')))= 16 বাইট বাইনারি। এর চেয়েও বড় তবে এর চেয়ে INTঅনেক বেশি ভালVARCHAR(36)
মিকনিক

খারাপ পরামর্শ, মিকনিক। আপনি যদি কোনও ইউএইডিকে প্রাথমিক কী হিসাবে ব্যবহার করেন তবে আপনার ডাটাবেসটি মারাত্মকভাবে স্কেল করবে। একটি যৌগিক প্রাথমিক কী হিসাবে 16 টি পৃথক পূর্ণসংখ্যা কলাম থাকতে পারে। এবং সূচী টুকরো টুকরো টুকরো! আপনার প্রাথমিক কী এখন এলোমেলো। আপনি যদি করেন তবে বিদেশী কী ব্যবহার করবেন না। ও (এন) থেকে ও (এন ^ 2) এ পরিবর্তিত হয়। ও (এন লগ 10 (এন)) থেকে ও (এন ^ 3) এ দুটি যোগ দেয়। এনকে 100,000 দিয়ে প্রতিস্থাপন করুন এবং পার্থক্যটি বিয়োগ করুন।
তমুসজেরোয়েস

2

আমি কেবলমাত্র আমার অ্যাপ্লিকেশন থেকে প্রবেশের জন্য ইউআইডি () কমান্ডটি অন্তর্ভুক্ত করার সিদ্ধান্ত নিয়েছি।

সবাইকে ধন্যবাদ.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.