PDA

View Full Version : query



taheri-ali
دوشنبه 04 دی 1385, 08:30 صبح
سلام
من یه سئوال مطرح کرده بودم به این صورت که چطوری ما می تونیم اسم یوزری که queryاجرا کرده رو به دست بیاریم که جواب اونو گرفتم:
create table t1(c1 int,c2 varchar(100) default suser_name())
حالا سئوال من اینه که آیا ما می تونیم نوع queryکه یوزر اجرا کرده رو به دست بیاریم و اگه ممکنه نوع دستور اون با یه مثال مثلاً یک یوزر این query رو اجرا کرده:
update table 1 set fname='jack'. ممنون

Kamyar.Kimiyabeigi
دوشنبه 04 دی 1385, 12:54 عصر
تا این حد که بخواین ریز بشید در کنترلdb مثلا" script اجرا شده را بدانید باید از profiler استفاده کنین

taheri-ali
سه شنبه 05 دی 1385, 07:12 صبح
نه دوست من از profiler نمی خوام استفاده کنم می خوام تو یه table ثبت کنم
در حقیقت یه trigger درست کنم که هر کاری یوزرها کردند ثبت بشه

AminSobati
جمعه 08 دی 1385, 11:31 صبح
برای دستورات ویرایشی مثل Insert, Update, Delete میشه Trigger نوشت، اما دستور Select رو فقط با استفاده از Profiler باید ثبت کنین

taheri-ali
شنبه 09 دی 1385, 08:51 صبح
در حقیقت من هم برای update و insert می خوام این کارو بکنم می شه کد اونو بهم بگید؟ ممنون

Kamyar.Kimiyabeigi
دوشنبه 11 دی 1385, 07:38 صبح
در حقیقت من هم برای update و insert می خوام این کارو بکنم می شه کد اونو بهم بگید؟ ممنون

شما باید برروی table و یا view مورد نظرتون از Trigger استفاده کنین (INSTEAD OF ) که در BOL توضیح داده
اینم یک مثال


CREATE TABLE BaseTable
(PrimaryKey int IDENTITY(1,1)
Color nvarchar(10) NOT NULL,
Material nvarchar(10) NOT NULL,
ComputedCol AS (Color + Material)
)
GO

--Create a view that contains all columns from the base table.
CREATE VIEW InsteadView
AS SELECT PrimaryKey, Color, Material, ComputedCol
FROM BaseTable
GO

--Create an INSTEAD OF INSERT trigger on the view.
CREATE TRIGGER InsteadTrigger on InsteadView
INSTEAD OF INSERT
AS
BEGIN
--Build an INSERT statement ignoring inserted.PrimaryKey and
--inserted.ComputedCol.
INSERT INTO BaseTable
SELECT Color, Material
FROM inserted
END
GO

عفت بزرگه
دوشنبه 11 دی 1385, 09:28 صبح
قاعدتا این کار اگر در زبان متصل انجام بشه بهتره