2016-10-31 2 views
2

Я нарисовал пробел. (Вышло из кофеина). Я пытаюсь создать триггер в Phpmyadmin, который добавит два символа «MR» в каждую строку. Я не хочу, чтобы символы добавлялись к основному идентификатору, но в столбце, помеченном mer_sku. Другие данные будут добавлены в этот mer_sku col из html-формы, поэтому данные должны быть конкатентными.Создать Concat Trigger в Phpmyadmin

Просто чтобы прояснить, Im пытается сделать триггер в PhpMyAdmin GUI

Спасибо!

ЗАБЫЛ ДОБАВИТЬ ЧТО Я Пытались

enter image description here

ERROR IS ON LINE 1

enter image description here

+0

Мы не можем помочь вам исправить ваш код, если вы не показываете, что вы пробовали. SO не является бесплатной услугой кодирования. – Barmar

+0

есть. Я забыл добавить скриншот. :( –

+0

'SET NEW.mer_sku = CONCAT (NEW.mer_sku, 'MR')' – Barmar

ответ

0

Вместо GUI, попробуйте запустить его в разделе запроса. Я думаю, что ошибка связана с тем, что mysql обрабатывает ; как конец вашего объявления триггера.

Так переопределить разделитель перед написанием кода для триггера

Попробуйте код ниже

delimiter | 

CREATE TRIGGER `merch_label` 
BEFORE INSERT ON `merchandise` 
FOR EACH ROW 
BEGIN 
    SET NEW.mer_sku = CONCAT(NEW.mer_sku, 'MR'); 
END; 
| 

delimiter ; 
+0

Он работает на вас? – jophab

+0

это не работает. Я продолжаю получать сообщение об ошибке. Нераспознанный тип оператора. (около «ПЕРЕД» в позиции 29) –

+0

Или я получу эту ошибку. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MariaDB, для правильного синтаксиса для использования рядом с «END» в строке 8 –

1

Итак пост мой код первой, а затем я объясню свою мотивацию и еще один вопрос, который представил себя, что Я пытаюсь решить.

?php 
if (isset($_POST['submit'])) { 
    $mfr = $_POST['mfr']; 
    $type = $_POST['type']; 
    $desc = $_POST['description']; 
    $price = $_POST['price']; 
    $qty = $_POST['qty']; 

    $last_id = 0; 
    $sql = "SELECT m_id FROM merchandise"; 
    $result = mysqli_query($connection, $sql); 
    while($row = mysqli_fetch_assoc($result)) { 
    $last_id = $row["m_id"]; 
    } 
    $next_id = $last_id+1; 
    $conc = number_format($next_id/100,2,'-',''); 

    $query = "INSERT INTO merchandise (mfr,type,description,mer_sku,price,qty) "; 
    $query .="VALUES ('$mfr','$type','$desc','MR{$mfr}{$conc}','$price','$qty')"; 
    $add_sku_query = mysqli_query($connection, $query); 
    confirmQuery($add_sku_query); 
    $alert = <<<DELIMETER 

<div class='alert alert-warning alert-dismissible fade in' role='alert'> 
<button type="button" class="close" data-dismiss="alert" aria-label="Close"> 
    <span aria-hidden="true">&times;</span> 
</button> 
<strong>Inventory Updated!</strong> <a href='inventory.php?view_all_inventory'>View All Inventory</a> 
</div> 
DELIMETER; 

    echo $alert; 
    } 
?> 

Так первый от позвольте мне сказать, что я пытаюсь установить это с помощью PDO, но я еще не до конца понимая, что так я буду придерживаться MySQLi. Который я знаю, что как у меня есть настройка кода, он оставляет его уязвимым для SQL Injection.

Так что в стороне, моя мотивация заключалась в том, чтобы попытаться добавить элементы в таблицу последовательно. Тем не менее, мой код в настоящее время автоматически увеличивается без учета переменной $ mfr, которая является ESSENTIAL. Каждый производитель имеет уникальное значение, поэтому для автоматического прироста НЕОБХОДИМО автоматически увеличивать производителем PER вместо автоматического увеличения, не обращая внимания на произвольную переменную, которая является конкатенированной.

**CURRENT AUTO INCREMENT, [NOT WHAT I WHAT]** 
MR500-01 
MR600-02 
MR700-03 
MR500-04 
MR600-05 
MR700-06 

**IDEAL AUTO INCREMENT, [WHAT I WANT]** 
MR500-01 
MR600-01 
MR700-01 
MR500-02 
MR600-02 
MR700-02 

Надеюсь, я объяснил свою мысль. В любом случае, это мой текущий статус, и я работаю над созданием резолюции, которую я NEEED.

Надеюсь, что это было несколько полезно для всех или если у кого-то есть полезный вклад, который был бы большим и высоко оцененным. Благодарю.

+0

Я нашел этот вопрос, похожий. Тем не менее, это использует движок MyISAM DB и автоинкремент первичного ключа, который я не хочу делать. Так на основе связанного вопроса. Результат, который я ищу, близок к этому. http://stackoverflow.com/questions/3605085/mysql-auto-increment-based-on-foreign-key –

Смежные вопросы