использовать SQL сервер с PHP / Trigger "вместо" в MySQL - PullRequest
0 голосов
/ 16 января 2020

Я создал базу данных на SQL сервере, потому что я могу использовать «вместо» для своих триггеров. Мне нужно использовать wamp, чтобы сделать веб-приложение в php:

Так что я установил dll сервера SQL, php .ini отредактирован, чтобы добавить "extension = php_sqlsrv_72_ts_x64.dll" и "extension = php_sqlsrv_pdo_72_ts_x64.dll». я делаю phpinfo (), чтобы увидеть, был ли он успешно установлен, поэтому я вижу pdo_sqlsrv и sqlsrv, но он не появляется в расширении php (когда я нажимаю на расширение wamp lo go> php>. моя проблема в том, что когда я пытаюсь подключиться к моей базе данных с помощью:

$conn = sqlsrv_connect($serverName,$connectionInfo);

, это говорит о том, что sqlsrv_connect неопределенная функция

В другом случае, если это невозможно исправить проблема, я хочу сделать ту же базу данных на MySQL, но нет «вместо» для триггера, просто «до» и «после», так есть ли способ сделать это без «вместо»?

контекст базы данных таков, что есть оборудование, относящееся к типу типа "p c или screen or ...", и если оборудование уже связано> откат или если оборудование не было создано до того, как связать его с наберите> откат

я надеюсь, что вы можете понять мои проблемы и мои плохие ошибки sh

спасибо!

РЕДАКТИРОВАТЬ 1: изображения моего триггера базы данных на p c таблица (прошу прощения за французские слова):

/* Trigger de contrainte pour le type de materiel pc ****************************************/
on pc
instead of
insert, update
as
/* Declaration des champs a inserer ou mettre a jour dans la table pc */
declare @pc_marque varchar(20)
declare @pc_modele varchar(30)
declare @pc_nomreseau varchar(30)
declare @pc_versionos varchar(20)
declare @pc_memoireram int
declare @pc_memoirestockage int
declare @pc_processeur varchar(20)
declare @pc_prof bit
declare @pc_mat int
declare @ecran_mat int
declare @imp_mat int
declare @vid_mat int
declare @idmat int
declare @pc_mat_verif int
declare @deleted int
declare BDPRO_CurseurPC cursor
for select pc_marque, pc_modele, pc_nomreseau, pc_versionos, pc_memoireram, pc_memoirestockage, pc_processeur, pc_prof, pc_mat from inserted
open BDPRO_CurseurPC
fetch next from BDPRO_CurseurPC into @pc_marque, @pc_modele, @pc_nomreseau, @pc_versionos, @pc_memoireram, @pc_memoirestockage, @pc_processeur, @pc_prof, @pc_mat
/*Pour chaque insertion ou mise à jour de PC*/
while @@FETCH_STATUS = 0
    begin
        set @deleted = (select COUNT(*) from deleted)
        set @ecran_mat = (select ecran_mat from ecran where ecran_mat = @pc_mat)
        set @imp_mat = (select imp_mat from imprimante where imp_mat = @pc_mat)
        set @vid_mat = (select vid_mat from videoprojecteur where vid_mat = @pc_mat)
        set @pc_mat_verif = (select pc_mat from Pc where Pc_mat = @pc_mat)
        set @idmat = (select mat_id from materiel where mat_id = @pc_mat)
        /* si le materiel auquel on veut associer le type est deja créer (Clé primaire existante)*/
        if (@idmat is not null)
             begin
            /* Si il n'y a rien dans la table deleted c'est donc une insertion*/
                if(@deleted <= 0)
                    begin
                    /* si le materiel n'est pas associé à l'un des types alors on insert*/
                        if ((@ecran_mat is null) and (@imp_mat is null) and (@vid_mat is null) and (@pc_mat_verif is null))
                            begin
                                insert into pc (pc_marque, pc_modele, pc_nomreseau, pc_versionos, pc_memoireram, pc_memoirestockage, pc_processeur, pc_prof, pc_mat)
                                values (@pc_marque, @pc_modele, @pc_nomreseau, @pc_versionos, @pc_memoireram, @pc_memoirestockage, @pc_processeur, @pc_prof, @pc_mat)
                            end
                        /* Si le materiel est deja associé alors on rollback*/
                        else
                            begin
                                print 'Il existe deja un type associé à ce materiel'
                                rollback transaction
                            end
                    end
                /* Si il y a quelque chose dans la table deleted c'est une mise à jour alors on met à jour dans la base de données*/
                else
                    begin
                        update pc
                        set pc_marque = @pc_marque, pc_modele = @pc_modele, pc_nomreseau = @pc_nomreseau, pc_versionos = @pc_versionos, pc_memoireram = @pc_memoireram, pc_memoirestockage = @pc_memoirestockage, pc_processeur = @pc_processeur, pc_prof = @pc_prof
                        where pc_mat = @pc_mat
                    end
            end
                    /* Si le materiel auquel on veut associer le type n'est pas créer alors on rollback*/
        else
            begin
                print 'le materiel nest pas prealablement enregistré'
                rollback transaction
            end
        /*On passe à l'insertion/ mise à jour suivante*/
        fetch next from BDPRO_CurseurPC into @pc_marque, @pc_modele, @pc_nomreseau, @pc_versionos, @pc_memoireram, @pc_memoirestockage, @pc_processeur, @pc_prof, @pc_mat

    end
/*on ferme le curseur*/
close BDPRO_CurseurPC
deallocate BDPRO_CurseurPC```

[enter image description here][1]


  [1]: https://i.stack.imgur.com/dwmDn.png
...