যদি উপস্থিত থাকে তবে অন্য সন্নিবেশ আপডেট করুন


14

আমি এমন একটি তৈরি করার চেষ্টা করছি STORED PROCEDUREযা UPDATEবলা একটি টেবিলের সাথে ব্যবহৃত হবে machine। এই টেবিলের তিন কলাম আছে ( machine_id, machine_nameএবং reg_id)।

পূর্বোক্ত সারণীতে, reg_id( INT) হ'ল একটি কলাম যার মানগুলির জন্য পরিবর্তিত হতে পারে machine_id

আমি টেবিলটিতে ইতিমধ্যে বিদ্যমান কিনা তা পরীক্ষা করতে a QUERY/ সংজ্ঞায়িত করতে চাই । যদি এটি হয়, তবে সেই সারিটি, অন্যথায় একটি নতুন সারি।PROCEDUREreg_idUPDATEINSERT

কেউ দয়া করে আমাকে লিখতে সাহায্য করতে পারেন QUERY/ PROCEDURE?

উত্তর:


12

আশা করি এটি সাহায্য করবে, মূল কী আপডেট করুন

create table machine(
  machine_id int not null primary key,
  machine_name varchar(50),
  reg_id int
);

insert into machine (machine_id, machine_name, reg_id)
values(1, 'my_machine', 1);

INSERT INTO machine (reg_id, machine_id, machine_name) VALUES (1, 1, 'test_machine')
  ON DUPLICATE KEY UPDATE machine_name=VALUES(machine_name);

এসকিউএল ফিডল এ কাজ করুন


তাদের reg_id = VALUES(reg_id)পাশাপাশি প্রয়োজন হতে পারে ।
ypercubeᵀᴹ

যদি আমাদের জিজ্ঞাসাবাদে দুটি শর্ত থাকে তবে আমি কীটিই অনন্য নয় বলে বোঝাচ্ছি?
স্যাম

11

কেবল সমস্যাটি হ'ল, আপনি এটিকে সাধারণ ক্যোয়ারির মতো ব্যবহার করতে পারবেন না। আইএফ বা WHILE এর মতো নিয়ন্ত্রণ কাঠামো কেবল সঞ্চিত প্রক্রিয়া বা ফাংশনে অনুমোদিত in

কেবল এই জাতীয় পদ্ধতি তৈরি করুন:

delimiter $$
create procedure select_or_insert()
begin
  IF EXISTS (select * from users where username = 'something') THEN
    update users set id= 'some' where username = 'something';
  ELSE 
    insert into users (username) values ('something');
  END IF;
end $$
delimiter ;

এবং এটিকে কল করুন:

call select_or_insert();

এবং সম্পন্ন


1
হ্যালো @ তাজ, আপনি যে উত্তরটি দিয়েছিলেন তা কি চেক করতে পারবেন?
ক্রেগ এফ্রেইন

@ ক্রেইগ ইফ্রেইন হাই আমি প্রথম এক সাথে গিয়েছিলাম। আপনার উত্তর। আবার ধন্যবাদ.
তাজ

@ তাজ আমি খুশি যে এই তথ্য সহায়ক, দয়া করে যদি এই উত্তরটি আপনার সন্দেহগুলি সরিয়ে দিতে পারে তবে প্রশ্নটি বন্ধ করে দেওয়া উচিত।
বিল এন। ভেরেলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.