Я создал базу данных на 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