PDA

View Full Version : دستور اینسرت شرطی



faramarz_s
جمعه 26 دی 1382, 21:01 عصر
برای اینکه داده ای را در دیتابیسی به صورت زیر اینزرت کنیم چه تغییراتی باید در کوئری بدهم؟

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[image]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[image]
GO

CREATE TABLE [dbo].[image] (
[img_pk] [int] NOT NULL ,
[img_name] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[img_data] [image] NULL ,
[img_contenttype] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO



INSERT INTO Image (img_pk,img_name,img_data,img_contenttype)" +
" VALUES (@img_pk, @img_name, @img_data,@img_contenttype )"+
" WHERE img_pk =3"

ناصرقلی
شنبه 27 دی 1382, 07:18 صبح
باید به جای insert از update استفاده کنید

faramarz_s
شنبه 27 دی 1382, 17:47 عصر
دقیقا به ذهن خودم هم رسیده بود.اما
1-آیا اینزرت شرطی هم امکانپذیر است؟
2-در مورد متن زیر که از کتابهای همراه یافتم چه نظری داری؟

If an update query could alter more than one row while updating both the clustering key and one or more text, image, or Unicode columns, the update operation fails and SQL Server returns an error message.

Modifying a text, ntext, or image column with UPDATE initializes the column, assigns a valid text pointer to it, and allocates at least one data page unless updating the column with NULL.



Note The UPDATE statement is logged. If you are replacing or modifying large blocks of text, ntext, or image data, use the WRITETEXT or UPDATETEXT statement instead of the UPDATE statement. The WRITETEXT and UPDATETEXT statements (by default) are not logged.

ناصرقلی
یک شنبه 28 دی 1382, 06:50 صبح
این یک نمونه از درج شرطی البته احتمالا حالتهای زیاد دیگه ای هم قابل انجام هست


if exists(select username from users where username='site')
insert into users (username,[password]) values ('hhh','ggg')

در مورد دومی هم باید روش فکر کنم ببینم منظورش چیه!