ورود

View Full Version : پر شدن خودکار فیلد، با شرط خاص



tabib_m
جمعه 24 اسفند 1386, 01:05 صبح
سلام

یک جدول دارم با این فیلد ها:


id (int)
title (varchar)
parent_id (int)
position (int)

در حقیقت یک جدول برای یک درخت موضوعی.

میخوام با کد sql کاری کنم که فیلد position در بعضی از قسمت های برنامه، به صورت اتوماتیک پر بشه.
به این صورت که مقدارش، بزرگترین position موجود بین رکوردهایی که parent_id اونها مطابق با parent_id ای که الان داریم ثبت میکنیم + 1 بشه.

برای مثال، اگر بخوام از کد php در کارم استفاده کنم، این کار رو میکنم:


<?php
$parent_id=$_POST['parent_id'];

$query=mysql_query("select MAX(`position`) from `table` where `parent_id`='$parent_id'");
$row=mysql_fetch_row($query);
$position=$row[0]+1;

mysql_query("insert into `table` set `title`='$title' , `parent_id`='$parent_id' , `position`='$position'");

?>


اصلا این کار شدنیه؟ یا الزاما باید از PHP کمک بگیرم؟

reza_rad
شنبه 25 اسفند 1386, 14:52 عصر
میشه.
از Procedure (http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html) باید استفاده کنی.
توی Procedure اول max پوزیشن رو بدست بیار- بعد یکی بهش اضافه کن و در نهایت Insert کن.
در نهایت کاری که باید موقع Insert دیتا بکنی اینه که به جای اینکه اسکریپت اینسرت رو فراخوانی کنی باید این Procedure رو فراخوانی کنی.

tabib_m
شنبه 25 اسفند 1386, 22:43 عصر
اون طوری که من فهمیدم، در mysql 4 پشتیبانی نمیشه! (؟)

در کل ممنون :)

reza_rad
دوشنبه 27 اسفند 1386, 11:52 صبح
اون طوری که من فهمیدم، در mysql 4 پشتیبانی نمیشه! (؟)
درسته. این feature از MySQL 5 به بعد اضافه شده.
اگه نمی تونید MySQL رو UpGrade کنید تنها راهی که دارید اینه که از سمت اپلیکیشن(php ) انجامش بدید.